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等配置。
  1. 首先保证两台主机之间能正常通信。

  2. 更改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,到此主机间容器互联配置完毕