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,我建议你升级一下内核。嗯,这里要注意:别在生产环境直接升级内核,最好先测试。

⚠️ 避坑指南: 我曾经在一台CentOS 7.6上直接装OVS,结果内核模块编译失败。后来发现是内核头文件没装全。所以,装OVS之前,务必确认内核头文件已安装:
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!"就说明装好了。你想想看,如果这一步卡住了,多半是网络问题——国内用户建议配置镜像加速器。

💡 我的小技巧: 配置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
🔑 关键点: 如果你用的是Ubuntu 22.04,OVS版本是2.15+,已经支持了很多新特性。但如果你需要DPDK支持,得从源码编译,这个我们后面章节再讲。

2.4 验证安装

装完了,怎么知道一切正常?我一般做三步验证:

  1. 检查OVS版本:
    ovs-vsctl --version
    输出应该包含Open vSwitch版本号,比如 2.15.0
  2. 检查OVS服务状态:
    sudo systemctl status openvswitch-switch
    看到 active (running) 就对了。
  3. 创建一个测试网桥:
    sudo ovs-vsctl add-br test-br
    sudo ovs-vsctl show
    输出应该能看到 Bridge "test-br"。测试完记得删掉:sudo ovs-vsctl del-br test-br

说白了,这三步走完,你的环境就准备好了。我刚开始学OVS时,第三步总是忘记删测试网桥,结果后面排查网络问题,发现多了一个莫名其妙的网桥……嗯,别学我。

⚠️ 重要提醒: 如果你在虚拟机里做实验,记得把虚拟机的网卡模式改成"桥接"或"自定义",否则OVS可能无法正常工作。我曾经在NAT模式下折腾了一下午,最后发现是网络模式的问题。

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容器搭一个自定义网络。到时候你会发现,原来容器网络可以这么灵活。