在Windows宿主机中连接虚拟机中的Docker容器

描述

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通了。(如不通,则尝试关闭宿主服务器防火墙)

你可能感兴趣的:(在Windows宿主机中连接虚拟机中的Docker容器)