Docker多主機網路通訊詳解
Docker多主機網路通訊詳解
作者:chszs,未經博主允許不得轉載。經許可的轉載需註明作者和部落格主頁:http://blog.csdn.net/chszs
Docker支援多主機網路通訊功能,可以通過命令列建立多主機通訊網路。本文使用Docker machine和Consul服務發現工具來講解這一點。
前提是需要先安裝Docker工具箱。
1、Docker Multi-Host Networking
作為一個示例,我們會在VirtualBox虛擬機器上使用docker machine建立3個Docker主機。其中一個Docker主機執行Consul服務發現工具,另外兩個Docker主機則通過第一臺主機的Consul服務發現容器共享網路資訊。
Docker容器網路部分的相信資訊可檢視:
https://docs.docker.com/engine/userguide/networking/dockernetworks/
Consul的詳細資訊見: https://www.consul.io/
Consul的特性:
1)服務發現
Consul使得服務註冊和服務發現變得很簡單
2)故障檢測
支援對服務的健康檢查,防止請求被路由到服務不可用的主機上
3)支援多資料中心
Consul支援多資料中心,無需複雜的配置
4)鍵值儲存
Consul使用了鍵值儲存來支援動態配置等
2、設定多主機網路
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上建立一個覆蓋網路
docker $(docker-machine config host2) network create -d overlay myapp
7)OK,此時如果在主機3上檢查網路,就可以看到主機2上建立的覆蓋網路。這是因為主機2和3都註冊到Consul,網路資訊在所有已註冊的主機之間實現了共享。
docker $(docker-machine config host2) network ls
docker $(docker-machine config host3) network ls
如果是在不同的主機上執行容器,可能就需要使用容器名來連線它們。我們可以這樣做個測試。
在主機2上執行一個Nginx容器,在主機3上執行一個busybox容器,通過busybox容器下載Nginx容器預設頁面來測試連線是否正常。
8)在主機2上執行Nginx容器,並指定建立的“myapp”網路
docker $(docker-machine config host2) run -itd --name=webfront --net=myapp nginx
9)驗證Nginx容器的執行
docker $(docker-machine config host2) ps
10)在主機3上執行一個busybox容器,使用引數下載主機2的Nginx容器的預設主頁。
docker $(docker-machine config host3) run -it --rm --net=myapp busybox wget -qO- http://webfront
如果結果返回的是HTML內容的輸出,意味著容器能夠使用之前建立的覆蓋網路連線到主機。
相關文章
- docker 1 主機和docker2主機通訊Docker
- bridge網路實現多個單主機進行通訊
- 利用OpenVSwitch構建多主機Docker網路Docker
- docker系列(五):網路通訊Docker
- 單一docker主機網路Docker
- 網路通訊協議-ICMP協議詳解!協議
- 網路通訊協議-TCP協議詳解!協議TCP
- 網路通訊協議-HTTP協議詳解!協議HTTP
- 網路通訊協議-SMTP協議詳解!協議
- Android 三大網路通訊方式詳解Android
- docker容器跨主機網路overlayDocker
- Docker的網路模式詳解Docker模式
- 詳解 Docker 容器網路配置Docker
- 同網段不同網段主機間通訊原理
- React Native通訊機制詳解React Native
- 網路通訊
- 乾元通多鏈路通訊裝置保障高鐵網路穩定
- docker的網路-單主機(三種原生網路)none、host、bridgeDockerNone
- 詳解五種Docker容器的網路模式Docker模式
- udp網路通訊UDP
- 網路原理-計算機網路詳解-網線傳遞數字訊號的原理計算機網路
- linux虛擬機器ping通windows主機詳解Linux虛擬機Windows
- 淺解硬體網路通訊+交換機晶片+通訊系統設計晶片
- 網路通訊2:TCP通訊實現TCP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- 乾元通多鏈路無線車輛通訊解決方案
- Docker高階應用之多臺主機網路互聯Docker
- Docker預設網段和主機網段衝突解決Docker
- Kubernetes的容器網路通訊機制
- WebRTC 及點對點網路通訊機制Web
- Docker 網路模型之 macvlan 詳解,圖解,實驗完整Docker模型Mac圖解
- 深入分析網路通訊,Wireshark助你解決網路問題!
- dubbo網路通訊(四)
- 網路通訊1:UDPUDP
- 19作 網路通訊
- 網路通訊協議協議
- 網路通訊基礎