不像bridge網路在單機上建立網路那麼簡單,建立ovelay網路必須的準備條件如下
- key-value store(engine支援consul、etcd和zookeeper等分布式儲存的key-value store)
- 集群中所有主機已經連線到key-value store
- swarm集群中每個主機安裝docker engine,且配置了下面的daemon引數
- –cluster-store
- –cluster-store-opt
- –cluster-advertise
- 集群中的每個主機擁有乙個唯一的hostname(key-value store使用hostname標識集群中的成員)
以下consul為作為鍵值儲存和服務發現,使用docker machine來建立overlay的多主機環境。
使用docker machine建立boot2docker虛擬主機時,自動建立主機上安裝docker engine。
# 建立乙個key-value儲存的主機keystore
docker-machine create -d virtualbox keystore
# 進入keystore中建立consul容器,對映埠到主機的8500
eval
"$(docker-machine env keystore)"
docker run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap
# 建立swarm集群
# 建立swarm manager主機manager,並用`--engine-opt`選項指定啟動daemon時的引數,這些引數是建立overlay需要的引數
docker-machine create \
-d virtualbox \
--swarm --swarm-master \
--swarm-discovery="consul://$(docker-machine ip keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip keystore):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
manager
# 建立集群節點,並用`--engine-opt`選項指定啟動daemon時的引數,這些引數是建立overlay需要的引數
docker-machine create -d virtualbox \
--swarm \
--swarm-discovery="consul://$(docker-machine ip keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip keystore):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
node0
# 建立overlay網路
# 設定本地docker連線到swarm manager(而不是直接連manager主機的docker daemon)
eval $(docker-machine env --swarm manager)
# 建立網路
docker network create --driver overlay --subnet=10.0.9.0/24 mynet
# 檢視swarm manager的網路
docker network ls
# 進入主機中檢視網路(與swarm manager的資訊有眯差別)
eval $(docker-machine env manager)
docker network ls
# 主機中的網路:內建網路none/host/bridge三種和新建網路mynet
# 執行應用程式
eval $(docker-machine env --swarm manager)
# 啟動容器時,指定網路mynet
docker run -itd --name=web --net=mynet --env="constraint:node==manager" nginx
# 主機中的網路:內建網路none/host/bridge三種和新建網路mynet,docker_gwbridge
eval $(docker-machine env manager)
docker network ls
一旦容器連線到多主機網路,它會自動連線到名稱為docker_gwbridge
的bridge網路上,此網路允許容器連線到集群外部。 測試Docker多主機網路效能
本文講的是測試docker多主機網路效能 編者的話 本文 docker多主機網路的效能。在過去的博文裡,我測試過 docker的網路 mysql伺服器團隊 提供了他們自己的結果,和我的觀察是一致的。本文測試的另乙個原因是docker最近發布了1.12版本,支援swarm mode。swarm mod...
Docker多主機網路通訊詳解
docker支援多主機網路通訊功能,可以通過命令列建立多主機通訊網路。本文使用docker machine和consul服務發現工具來講解這一點。前提是需要先安裝docker工具箱。作為乙個示例,我們會在virtualbox虛擬機器上使用docker machine建立3個docker主機。其中乙個...
Docker 多主機通訊
docker多主機通訊 為docker容器指定自定義網段的固定 ip 靜態 ip位址 第一步 建立自定義網路 備註 這裡選取了172.172.0.0網段,也可以指定其他任意空閒的網段 docker network create subnet 172.172.0.0 16 docker ice 注 d...