背景:
两台服务器主机分别是: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了)
扫描二维码关注公众号,回复:
11074721 查看本文章
"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控制台上看到服务正常注册上去了。