docker容器跨主机互联小实验
环境:
两台通过vmware虚拟出来的主机
运行centos7操作系统
前面讲的通过link命令实现容器之间的互联,然而link命令只能实现单个主机中各个容器之间的连接。如果需要在不同的主机之间实现连接,必须通过其他的方式。
docker安装之后会默认创建一个名为docker0的虚拟网桥,当创建容器的时候会创建一组veth pair接口。这对接口一端在容器中,称为eth0,另一端被挂载到了docker0网桥上,以veth开头,这样主机就可以和容器之间进行通信。
跨主机的情况下可以通过linux的路由机制来解决
1.在第一台主机上修改Docker0的网络地址。
修改方式可以参考:
http://blog.****.net/lin521lh/article/details/78470732
2.在左边的主机上添加路由规则:
route add -net 172.18.0.0/16 gw 192.168.18.128
同样的在右边的主机上添加路由规则:
route add -net 172.17.0.0/16 gw 192.168.18.130
3.重新设置防火墙
iptables -F ;
iptables -t nat -F
两个容器之间可以相互ping通。
数据包的发送流程:
Container(右)->docker0(右)->eth0(右)->eth0(左)->docker0(左)->container(左)