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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM