Docker系列(四):容器之間的網絡通信


首先我們需要知道:兩個容器要能通信,必須要有屬於同一個網絡的網卡。

先來看下正常情況下我們的容器默認是否是能通信的,這里運行兩個測試容器:

docker run -it --name=bbox1 busybox

docker run -it --name=bbox2 busybox

然后我們進入bbox2容器中,並ping容器bbox1:

可以發現無法ping通,這是因為容器默認的隔離原因導致的。

從 Docker 1.10 版本開始,docker daemon 實現了一個內嵌的 DNS server,使容器可以直接通過“容器名”通信。方法很簡單,只要在啟動時用 --name 為容器命名就可以了。

首先我們需要創建一個bridge類型的網橋:docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net2  

創建的同時為這個網橋指定了IP段,當然也可以不指定。

創建完成后可以通過 docker network ls查看:

然后我們重新運行前面的兩個容器,並為他們指定netwoek:

docker run -it --network=my_net2 --name=bbox1 busybox

docker run -it --network=my_net2 --name=bbox2 busybox

然后在bbox2容器中ping容器bbox1:

使用 docker DNS 有個限制:只能在 user-defined 網絡中使用。也就是說,默認的 bridge 網絡是無法使用 DNS 的,這個我們在開始的時候就已經驗證過了。

好了,大功告成!

 


免責聲明!

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



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