实验环境
- Ubuntu 20.04
- Docker 20.10.6
本机 docker 上有两个镜像,一个是通过docker pull ubuntu
拉取下的 ubuntu 镜像,另一个是在 ubuntu 镜像的基础上添加了 ping 和 ifconfig 命令 - OVS 2.13.1
一、添加一个 OVS 网桥
ovs-vsctl add-br s1
二、创建两个 Ubuntu 容器
创建第一个 ubuntu 容器,命名 host1
docker run -it --name=host1 --net=none --privileged=true cyquen/ubuntu:v1
创建第二个 ubuntu 容器,命名 host2
docker run -it --name=host2 --net=none --privileged=true cyquen/ubuntu:v1
- –name 为容器指定一个名称
- –net=none 指定容器的连接类型为 none
- –privileged=true 提升 docker 容器权限
由于 docker 命令里设置了 --net=none ,docker 容器里只有一个环回口 lo
三、使用 ovs-docker 命令实现两容器互联
为 容器 host1 和 host2 添加 eth0 网卡
ovs-docker add-port s1 eth0 host1
ovs-docker add-port s1 eth0 host2
这时候通过 ifconfig 命令可以看到容器 host1 和 host2 多了 eth0 网卡,但是没有 ip
为容器 host1 和 host2 的 eth0 配置 ip
容器 host1:
ifconfig eth0 192.168.0.1/24
容器 host2:
ifconfig eth0 192.168.0.2/24
配置完 ip 后,通过 ping 命令 测试连通性
通过 ovs-ofctl show s1
可以看到 ovs 默认有一条流表项,代表流正常转发
参考
https://blog.csdn.net/yeya24/article/details/79829240