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 實現容器與容器通訊的時候,都是站在乙個應用的角度進行容器通...