Docker跨主机通信之路由
一、实验环境:
主机名 | 主机IP | Docker0_IP |
Docker1 | 192.168.88.130 | 172.17.0.1 |
Docker2 | 192.168.88.131 | 172.18.0.1 |
二、实验操作
设定指定的dokcer0的IP
#vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/docker daemon --bip=172.18.42.1/16 -H fd:// -H=unix:///var/run/docker.sock
systemctl daemon-reload
systemctl restart docker #有可能docker起不来,此时重启机器即可。
设定路由规则
route add -net 172.17.0.0/16 gw 192.168.88.131 #对端主机IP
route add -net 172.18.0.0/16 gw 192.168.88.130
关闭火墙规则,对icmp的reject:
iptables -F; iptables -t nat –F
测试
在docker1上的容器能够和docker2上的容器通信
注意使用tcpdump分析和排错: tcpdump icmp
数据包流向
docker1_container1_eth0->docker1_docker0->docker1_enoXX-> docker2_enoXX(docker1'gw)->docker2_docker0 -> docker2_container1_eth0