2、环境准备:Linux系统要求、安装Docker、安装Open vSwitch、验证安装
好,咱们正式开始动手了。这一章说白了就是搭积木——把Linux、Docker、Open vSwitch这三块基石垒起来。我见过不少新手一上来就急着敲命令,结果环境没配好,后面排查问题排查到怀疑人生。所以,咱们稳一点,一步步来。
2.1 Linux系统要求
先说说系统。我个人习惯用Ubuntu 20.04 LTS或22.04 LTS,这两个版本对Docker和OVS的支持最成熟。CentOS 7也行,但内核版本低,后面可能会踩坑。
硬件最低要求:
- CPU:双核x86_64,支持虚拟化(VT-x/AMD-V)
- 内存:4GB(我建议8GB,因为要跑容器和OVS)
- 磁盘:20GB空闲空间
内核版本检查:
Open vSwitch对内核版本有要求。我记得内核低于3.10的话,有些高级功能(比如DPDK)就跑不起来。先看一眼你的内核:
uname -r
输出应该是类似 5.15.0-xxx-generic 这样的。如果低于4.x,我建议你升级一下内核。嗯,这里要注意:别在生产环境直接升级内核,最好先测试。
sudo apt install linux-headers-$(uname -r) # Ubuntu
sudo yum install kernel-devel # CentOS
2.2 安装Docker
Docker的安装其实很简单,但有几个细节容易忽略。我习惯用官方脚本一键安装,干净利落:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
装完之后,记得把当前用户加入docker组,不然每次都要sudo:
sudo usermod -aG docker $USER
newgrp docker # 或者重新登录
验证一下:
docker --version
docker run hello-world
看到"Hello from Docker!"就说明装好了。你想想看,如果这一步卡住了,多半是网络问题——国内用户建议配置镜像加速器。
/etc/docker/daemon.json:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
然后重启Docker:sudo systemctl restart docker
2.3 安装Open vSwitch
接下来是重头戏。Open vSwitch的安装方式有两种:从包管理器装,或者从源码编译。我建议新手用包管理器,省心。
Ubuntu/Debian:
sudo apt update
sudo apt install openvswitch-switch openvswitch-common
CentOS/RHEL:
sudo yum install epel-release
sudo yum install openvswitch
装完之后,启动服务:
sudo systemctl start openvswitch-switch
sudo systemctl enable openvswitch-switch
等一下,这里有个坑。我在项目中遇到过,有些云服务器默认禁用了某些内核模块,导致OVS启动失败。如果遇到这种情况,检查一下内核模块是否加载:
lsmod | grep openvswitch
如果没输出,手动加载:
sudo modprobe openvswitch
2.4 验证安装
装完了,怎么知道一切正常?我一般做三步验证:
- 检查OVS版本:
输出应该包含Open vSwitch版本号,比如ovs-vsctl --version2.15.0。 - 检查OVS服务状态:
看到sudo systemctl status openvswitch-switchactive (running)就对了。 - 创建一个测试网桥:
输出应该能看到sudo ovs-vsctl add-br test-br sudo ovs-vsctl showBridge "test-br"。测试完记得删掉:sudo ovs-vsctl del-br test-br。
说白了,这三步走完,你的环境就准备好了。我刚开始学OVS时,第三步总是忘记删测试网桥,结果后面排查网络问题,发现多了一个莫名其妙的网桥……嗯,别学我。
2.5 环境检查清单
最后,给你一个检查清单,方便你对照:
| 组件 | 检查命令 | 预期结果 |
|---|---|---|
| Linux内核 | uname -r |
≥ 4.15 |
| Docker | docker --version |
≥ 20.10 |
| Open vSwitch | ovs-vsctl --version |
≥ 2.13 |
| OVS服务 | systemctl status openvswitch-switch |
active (running) |
好,环境准备就到这儿。下一章咱们开始玩真的——用OVS给Docker容器搭一个自定义网络。到时候你会发现,原来容器网络可以这么灵活。