mac上docker容器ping宿主机时 Destination

2019-08-26  本文已影响0人  PENG先森_晓宇

情景在线:某主机内网ip为192.168.50.143。该主机开启多个服务,且不在一个docker的network下,如果服务想要通信,服务间就只能使用服务暴露在宿主机的端口来进行互相通信。比如一个mysql服务,暴露在宿主机端口为3307,容器端口为3306。一个php服务暴露在宿主机端口为8088,容器端口为80。这种情况下如果php想要连接mysql服务,配置就应该为host=192.168.50.143,port=3307。

docker网络如果正常的话,这样是完全没问题的。但是本次实验却遇到mysql一直连接超时的问题,说明docker网络有问题了,于是进入容器后,ping 192.168.50.143,果然ping不通了。。。。报Destination Host Unreachable错误。但是在容器内ping外网ping 8.8.8.8却能ping通,在容器内ping同一个网段的docker容器的ip也能ping。

由此可见,该问题就是容器内不能ping通宿主机ip,导致mysql服务一直连接超时。参考宿主机与容器ping不同一文,应该是宿主机网段和docker网段冲突导致俩者ping不通。

可能有人问既然能ping通外网,连接mysql的host直接使用主机的公网ip即可。可以是可以,但是为了提高速度,这里最好使用内网ip。



服务间通讯的4种方式

说白了,不管什么连接方式,都是在容器内连接的,如果连接失败或者超时,说明容器内网络有问题了。

上一篇 下一篇

猜你喜欢

热点阅读