不同主机间的 docker 网络互通

背景:
两台服务器主机分别是:192.168.0.111,192.168.0.114
192.168.0.111 服务器上运行了两个docker镜像,分别是:rocketmq、consul
192.168.0.114 服务器上运行了三个后台服务的docker镜像,分别是uip-uadmin、uip-pangu、uip-gateway

问题:
现在需要将三个后台服务注册到consul上,发现一直注册不上去。

解决方案
通过已经跑起来的docker镜像,查看服务器给docker容器分配的网段:
在192.168.0.111上执行:

docker inspect rocketmq

可以看到输出内容含:(gateway的网段地址为172.17.0)

复制代码
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "cfdffdfaed734aef5a0a06c8400ffd45bac828655468039419d780ab43ba9ead",
"EndpointID": "6bc9f0b9d1695c9e39c5568efffcfbd98a1194b5c8bcc2ca1de54690aa58a295",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:01:02",
"DriverOpts": null
}
}
复制代码

由此可知,111服务器给docker容器分配的网段是:172.17.0
同理可知,114服务器给docker容器分配的网段也是:172.17.0
需要修改其中一个服务器的docker容器网段,使不一致。因为111服务器上跑的docker容器比较少,所以我们将111服务器上的docker容器网段指定为:172.17.1
在192.168.0.111服务器的/etc/docker下建立文件daemon.json,输入以下内容进行网段指定:

{"bip":"172.17.1.1/24"}

daemon.json 整体内容:

[root@localhost docker]# cat daemon.json 
{"bip":"172.17.1.1/24"}

在192.168.0.111服务器上添加网段路由:

ip route add 172.17.0.0/24 via 192.168.0.114

重启 docker

systemctl restart docker

重启rocketmq、consul

docker restart rocketmq
docker restart consul

再次查看服务器给docker容器分配的网段:
在192.168.0.111上执行:

docker inspect rocketmq

可以看到输出内容含:(gateway的网段地址已经变成172.17.1了)

复制代码
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "cfdffdfaed734aef5a0a06c8400ffd45bac828655468039419d780ab43ba9ead",
"EndpointID": "6bc9f0b9d1695c9e39c5568efffcfbd98a1194b5c8bcc2ca1de54690aa58a295",
"Gateway": "172.17.1.1",
"IPAddress": "172.17.1.2",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:01:02",
"DriverOpts": null
}
}
复制代码

然后将114服务器上的三个docker容器进行重启,就能在consul控制台上看到服务正常注册上去了。

猜你喜欢

转载自www.cnblogs.com/miaoying/p/12760509.html