1. 程式人生 > >Docker系列(四):容器之間的網路通訊

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  

建立完成後可以通過 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 的,這個我們在開始的時候就已經驗證過了。

好了,大功告成!