docker中两个容器ping不通的情况

问题描述:

在 Docker容器遇到这样一个问题,在Hive中所在的容器,访问 Mysql所在的容器时,ping不通,两个容器的 ip地址分别为:

  •   Hive容器:172.18.0.2
  •       Mysql容器:172.17.0.2

  可见,这是两个网段的 ip(172.18 和 172.17),所以导致互相 ping不通。

 

解决办法:(参考:Docker中在不同网段下的容器的互联

查看 docker容器的网络列表:

(base) luochao7@ZBMac-C02FQBKRM ~ % docker network ls

        

 

如上图所示,有 bridge、hadoop、host、none 这4个网络,其中:bridge 是docker里默认的桥接模式 ,host是docker里默认的仅主机模式,none是docker里的NAT模式,而 hadoop是我在安装 Hadoop时单独开的一个网络。

  •       查看 bridge网络:

         

 

   可见,bridge网络下面的容器有 mysql容器。

  •   将 mysql 容器加入到 hadoop网络中:
docker network connect hadoop mysql
  •   然后再查看 hadoop网络:

            

 

   可见,在 hadoop网络中,就有 mysql容器了,并且给mysql容器分配了一个此网络的 ip地址:172.18.0.3

 

在Mysql容器中,查看 ip: ifconfig | grep inet

            

 

  可见,就有 2个 ip地址了。

  此时,再 ping Mysql所在容器的新 ip,即:172.18.0.3,就能 ping 通了。

 

注: 新的 ip仅仅对 hadoop网络下的容器有用,相当于给 mysql在 hadoop网络中,分配了一个别名,但是他真实的名字 (ip),还是 172.17.0.2

 

posted @ 2022-03-07 17:33  星海寻梦233  阅读(3826)  评论(0编辑  收藏  举报