docker安裝後,默認會建立三種網絡類型,bridge、host和none,可經過以下命令查看:node
sudo docker network ls NETWORK ID NAME DRIVER SCOPE 32c1b52444f2 bridge bridge local 6a2d84a36162 host host local cff3a04a41f6 none null local
-network=none
則docker不會分配局域網ip。docker network create --subnet=192.168.0.0/16 staticnet
--subnet=192.168.0.0/16
子網網段
staticnet
自定義網絡類型mysql
再次查看docker 網絡類型:docker network ls
會多出來一個自定義的網絡類型。web
udo docker run -it --name userserver --net staticnet --ip 192.168.0.2 mysql:5.7
參數說明:--net 指定網絡類型。--ip 指定容器ip(對應網絡類型下的網段內)算法
docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACE='eth0' --name=cs1 --net staticnet --ip 192.168.0.2 consul agent -server -bootstrap -ui -node=Server01 -client='0.0.0.0'
參數說明:
-p <hostPort>:<containerPort>
映射容器端口到主機端口
-v <hostDataDir>:<containerDataDir>
卷文件映射
--net <networktype>
指定網絡類型這裏使用自定以的網絡類型
--ip <ipaddress>
指定容器在網絡類型下的ip地址
consul ...
開始執行consul的命令
agent -server
表示啓動 Agent 進程以consul server模式
agen -client
表示啓動 Agent 進程以consul client模式
-bootatrap
表示此節點時server-leader,一般多個server會採用Raft算法選舉產生一個leader,剩下的server爲follow
-ui
啓動web ui管理界面,默認端口:8500 須開放出來。
-node
節點名稱,集羣中惟一
-client='0.0.0.0'
將綁定客戶端地址,0.0.0.0表示全部地址都能訪問
-join
加入某一集羣中sql
上面命令會啓動一個Consul節點,名稱爲:Server01,端口已經進行了映射,可經過主機地址:8500 訪問web ui管理頁面。docker
一、查看剛剛建立的leader節點的信息:
docker exec cs1 consul members
輸出:bootstrap
Node Address Status Type Build Protocol DC Segment Server01 192.168.0.2:8301 alive server 1.6.1 2 dc1 <all>
能夠看到第一個節點的地址。
二、建立第二個server並加入集羣windows
docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=cs2 --net staticnet --ip 192.168.0.3 consul agent -server -node=Server02 -join='192.168.0.2'
三、建立第三個server並加入集羣網絡
docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=cs3 --net staticnet --ip 192.168.0.4 consul agent -server -node=Server03 -join='192.168.0.2'
四、建立client並加入集羣ui
-- client01 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip05 --net staticnet --ip 192.168.0.5 consul agent -node client01 -join='192.168.0.2' -client='0.0.0.0' --client02 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip06 --net staticnet --ip 192.168.0.6 consul agent -node client02 -join='192.168.0.2' -client='0.0.0.0' -- client03 docker run -d -e CONSUL_BIND_INTERFACE='eth0' --name=CC-ip07 --net staticnet --ip 192.168.0.7 consul agent -node client03 -join='192.168.0.2' -client='0.0.0.0'