描述
docker中部署consul注册中心,docker中的java服务在consul中进行注册,然后本地服务去调用consul中的某服务,一直调用不成功!
分析
网络拓扑图:
本地电脑(192.168.1.168)--------->宿主服务器(192.168.1.251)---------->docker容器 (172.17.0.5)
- docker中java服务ip为 172.17.0.5
- 宿主服务器ip为 192.168.1.251
- 本机电脑ip为 192.168.1.168
猜想到可能是网络不通的问题(192.168和172.17不在同一网段)并进行了测试,果然。。。
尝试
进行了如下尝试:
- 本地电脑 ping 宿主服务器正常
- 宿主服务器 ping docker 容器的java服务ip 正常
- docker 容器的java服务ping 宿主机器正常
- 本地电脑 ping docker 容器不通
- docker 容器 ping 本地电脑不通
解决
在本地电脑以管理员身份打开cmd,添加通往 172.17.0.5 网络的路由。
(本地电脑通往172.17.0.5的网络由192.168.1.251进行转发)
route add -p 172.17.0.0 mask 255.255.0.0 192.168.1.251
(-p表示永久添加)
查看添加的路由:
route print
此时不出意外就可以互相ping通了。(如不通,则尝试关闭宿主服务器防火墙)
网友评论