Docker系列(四):容器之間的網路通訊
阿新 • • 發佈:2018-12-01
首先我們需要知道:兩個容器要能通訊,必須要有屬於同一個網路的網絡卡。
先來正常情況下我們的容器預設是否是能通訊的,這裡執行兩個測試容器:
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
建立完成後可以通過 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 的,這個我們在開始的時候就已經驗證過了。
好了,大功告成!