docker 容器間通信

方式一(IP通信)

兩個容器可以想象成兩個虛擬機,虛擬機直接互信通信,當然通過IP進行通信。那麼我們可以得出:容器間通信,需要容器內配有屬於同一個網路的IP。

容器間通過IP通信,走網路傳輸數據,和我們之前的生產環境出奇的一致,很方便理解。

如何為容器添加IP呢?

請參考這個《docker 創建容器時指定容器ip》文章。

今天我們聊點新鮮的,如何為一個容器添加一個網卡。

假設你已經啟動了一個容器,名為centos7_test。

之前啟動centos7_test容器時,執行了--network=none,選擇了不創建網卡模式。

此時centos7_test容器內是一張網卡都沒有的,那麼想為它添加一個網卡該怎麼辦呢?

Advertisements

[root@cgls ~]# docker network connect bridge centos7_test

我們選擇為centos7_test容器添加一個bridge 網路的ip,由於bridge 網路會自動分配一個172.17.0.0/16網段的ip。此刻你的容器就成功被添加了網卡。

方式二(Docker DNS Server)

在實際部署過程中,有時候我們一開始不知道各容器的IP是多少,但是為了能連通各容器,docker daemon 使用內嵌的 DNS server,使容器通過「容器名」進行通信。

啟動兩個容器

[root@cgls ~]# docker run -itd --name centos7_test1 centos

Advertisements

[root@cgls ~]# docker run -itd --name centos7_test2 centos

此刻可以通過容器name進行互相訪問。

方式三(joined 容器)

joined 容器,顧名思義通過容器進行連接。說白了就是多個容器共享一個網路棧,共享網卡和配置信息,這些容器共同組成了一個大容器。:

先創建一個

[root@cgls ~]# docker run -itd --name centos7_test3 centos

然後創建新容器並通過 --network=container:centos7_test3 指定 jointed 容器為 centos7_test3

[root@cgls ~]# docker run -itd --name centos7_test4 --network=container:centos7_test3 centos

centos7_test3 與centos7_test4 此刻都在一個虛擬的大容器中,通信也是OK的。

Advertisements

你可能會喜歡