Docker多主機網路

2021-07-13 07:58:01 字數 2378 閱讀 1240

不像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...