Docker 跨主机通信 (指定路由方法)
[root@ops-test ~]# docker network ls NETWORK ID NAME DRIVER SCOPE a12599cda63c bridge bridge local e24ca1f8f76d host host local 2ab615faf494 none null local [root@ops-test ~]# docker run -it --rm --net=host -p 80:80 centos bash
默认带有3种网络驱动
bridge: NAT模式,默认使用 host : 会走物理网卡,只能起一个对应端口容器。相当于复制物理机IP来访问。 none : 容器内只有回环地址。需要API等配置。
首先保证两台主机之间能正常通信。
更改Docker默认的网卡IP,使之间不同网段。
第一台宿主机:(IP:192.168.1.100)
vim /usr/lib/systemd/system/docker.service [Service] ExecStart= 此处增加:--bip=192.58.1.1/16 保存后: systemctl daemon-reload #重载配置 systemctl restart docker #记得关闭防火墙,selinux之类的。
第二台宿主机:(IP:192.168.1.200)
vim /usr/lib/systemd/system/docker.service [Service] ExecStart= 此处增加:--bip=192.158.1.1/16 保存后: systemctl daemon-reload #重载配置 systemctl restart docker #记得关闭防火墙,selinux之类的。
完成以上操作后,宿机互ping检测,是否连通,连通则继续往下.
各自进入容器,查看各自IP,ping对方容器IP看看是否畅通(一般不通)
docker run -it --name node1 centos bash (容器内IP:192.58.1.2) docker run -it --name node2 centos bash (容器内IP:192.158.1.2)
宿主机1上配置一条路由到宿主机2 (演示:临时生效)
route add -net 192.158.1.0/24 gw 192.168.1.200 ###route add -net 宿主机2容器内IP段 gw 宿主机2真实IP
最后进入容器测试是否能ping宿主机2,到此主机间容器互联配置完毕
停留在世界边缘,与之惜别