Docker + ovs环境搭建,原来如此简单
一直没敢下手尝试docker的网络使用ovs,总觉得可能很复杂。所以,人往往都是自己把自己拒之门外的。
我整整折腾了一天,容器内以二层方式访问外部的IP始终不通。最后发现原来是网卡混杂模式惹的祸
环境准备
安装docker
在我的其他博文里有国内源安装docker的内容,原样照搬
$ sudo apt-get update && sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
$ apt update
$ apt-get -y install docker-ce
安装ovs
$ sudo apt-get install openvswitch-switch
安装ovs-docker
简单介绍一下,ovs-docker实际上是一个shell脚本,封装了ovs和docker的一些操作。
$ cd usr/bin
$ wget https://raw.githubusercontent.com/openvswitch/ovs/master/utilities/ovs-docker
$ chmod a+rwx ovs-docker
实验
两个docker容器经过ovs网桥进行访问及访问外部网络
容器互访
创建ovs网桥
$ ovs-vsctl add-br br0
创建两个容器
注:实验使用了busybox的镜像,需要提前pull到本地
docker pull busybox
$ docker run -it --net=none --privileged=true --name=h1 busybox
在另外一个shell中执行
$ docker run -it --net=none --privileged=true --name=h2 busybox
查看当前网络
/ # ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
可以看到当前仅有一个loopback接口
连接容器到网桥
$ ovs-docker add-port br0 eth0 h1
$ ovs-docker add-port br0 eth0 h2
配置IP地址
分别在两个docker容器中配置eth0的IP地址为同一个网段
h1
$ ifconfig eth0 192.168.1.2
h2
$ ifconfig eth0 192.168.1.3
测试连通性
$ ping 192.168.1.3
PING 192.168.1.2 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: seq=0 ttl=64 time=1.065 ms
64 bytes from 192.168.1.3: seq=1 ttl=64 time=0.139 ms
没错,就是这么简单
访问外部网络
当我解决了混杂模式的问题之后,原来一切都是那么简单
在外部另外一个PC上配置了192.168.1.1
为br0增加物理接口
$ ovs-vsctl add-port br0 ens192
测试
从容器中ping 192.168.1.1
$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=30 ttl=64 time=1.319 ms
64 bytes from 192.168.1.1: seq=31 ttl=64 time=0.461 ms
大功告成
文章转载自Simble的小站,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




