Docker多主機網路通訊詳解

2021-09-19 21:49:43 字數 1755 閱讀 8380

docker支援多主機網路通訊功能,可以通過命令列建立多主機通訊網路。本文使用docker machine和consul服務發現工具來講解這一點。

前提是需要先安裝docker工具箱。

作為乙個示例,我們會在virtualbox虛擬機器上使用docker machine建立3個docker主機。其中乙個docker主機執行consul服務發現工具,另外兩個docker主機則通過第一台主機的consul服務發現容器共享網路資訊。

docker容器網路部分的相信資訊可檢視:

consul的詳細資訊見: 

consul的特性:

1)服務發現

consul使得服務註冊和服務發現變得很簡單

2)故障檢測

支援對服務的健康檢查,防止請求被路由到服務不可用的主機上

3)支援多資料中心

consul支援多資料中心,無需複雜的配置

4)鍵值儲存

consul使用了鍵值儲存來支援動態配置等

1)建立名為「host1-consul」的docker主機

docker-machine create -d virtualbox host1-consul
2)在「host1-consul」主機上執行consul容器

docker $(docker-machine config host1-consul) run -d -p "8500:8500" -h

"consul" progrium/consul -server -bootstrap

3)驗證上述容器的執行狀態

docker $(docker-machine config host1-consul) ps
4)執行第二個docker主機,並註冊到前面的consul容器

docker-machine create -d virtualbox  --engine-opt="cluster-store=consul://$(docker-machine ip host1-consul):8500" --engine-opt="cluster-advertise=eth1:0" host2
5)執行第三個docker主機

docker-machine create -d virtualbox  --engine-opt="cluster-store=consul://$(docker-machine ip host1-consul):8500" --engine-opt="cluster-advertise=eth1:0" host3
現在,後面兩個docker主機都有預設的網路配置,且只能用於單個主機的通訊。

6)要實現多主機網路通訊,還需要在主機2上建立乙個覆蓋網路

7)ok,此時如果在主機3上檢查網路,就可以看到主機2上建立的覆蓋網路。這是因為主機2和3都註冊到consul,網路資訊在所有已註冊的主機之間實現了共享。

docker $(docker-machine config host2) network ls

docker $(docker-machine config host3) network ls

9)驗證nginx容器的執行

docker $(docker-machine config host2) ps

如果結果返回的是html內容的輸出,意味著容器能夠使用之前建立的覆蓋網路連線到主機。

Docker 多主機網路通訊詳細介紹

docker多主機網路通訊詳解 docnoibhvcker支援多主機網路通訊功能,可以通過命令列建立多主機通訊網路。本文使用docker machine和consul服務發現工具來講解這一點。前提是需要先安裝docker工具箱。1 docker multi host networking 作為乙個示...

Docker 多主機通訊

docker多主機通訊 為docker容器指定自定義網段的固定 ip 靜態 ip位址 第一步 建立自定義網路 備註 這裡選取了172.172.0.0網段,也可以指定其他任意空閒的網段 docker network create subnet 172.172.0.0 16 docker ice 注 d...

docker網路通訊機制

docker 中網路通訊機制以及網橋的使用 網路配置0.docker容器間的通訊,docker允許通過外部訪問容器互聯的方式來提供網路服務 1.docker容器網路通訊機制 2.docker 網路使用一般在使用docker網橋 bridge 實現容器與容器通訊的時候,都是站在乙個應用的角度進行容器通...