使用openvswitch实现跨主机docker容器互联

安装openvswitch的步骤请参考上一篇文章:http://www.cnblogs.com/xkops/p/5568167.html

环境:
192.168.3.201 node1
192.168.3.202 node2


1.在node1上创建网桥obr0,然后增加端口gre0到obr0。
ovs-vsctl add-br obr0
ovs-vsctl add-port obr0 gre0
ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.3.202
ovs-vsctl show

brctl addbr br0
ifconfig br0 192.168.1.1 netmask 255.255.255.0
brctl addif br0 obr0
brctl show


2.在node2上创建网桥obr0,然后增加端口gre0到obr0。
ovs-vsctl add-br obr0
ovs-vsctl add-port obr0 gre0
ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.3.201
ovs-vsctl show

brctl addbr br0
ifconfig br0 192.168.2.1 netmask 255.255.255.0
brctl addif br0 obr0
brctl show

3.在node1上启动容器,并查看ip地址。
docker run -it --name cct1 centos /bin/bash --使用Ctrl+p+q可以退出容器,但容器却能在后台运行。
ip: 192.168.1.2

4.在node2上启动容器,并查看ip地址。
docker run -it --name cct2 centos /bin/bash --使用Ctrl+p+q可以退出容器,但容器却能在后台运行。
ip: 192.168.2.2

5.在node1上添加路由表,使node1能到达node2定义的192.168.2.0/24网段。
ip route add 192.168.2.0/24 via 192.168.3.202 dev eth0

6.在node1上连接到容器,并测试与node2上容器的连通性。
docker attach centos
ping 192.168.2.2

7.在node2上添加路由表,使node2能到达node1定义的192.168.1.0/24网段。
ip route add 192.168.1.0/24 via 192.168.3.201 dev eth0

到此,如果没有出现任何问题的话,最后node1和node2上的两个容器之间能够互相ping通。

原文地址:https://www.cnblogs.com/xkops/p/5568926.html