以下內容只是命令,原理自行百度,google或者官方查閱!
方案一、overlay Consul
三台主機為例(都要安裝docker):
192.168.20.20(consul服務)
192.168.20.21(host1)
192.168.20.22(host2)
1、在consul服務主機安裝consul服務容器
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
2、host1、host2主機上修改以下內容
vi /usr/lib/systemd/system/docker.service 在ExecStart追加
--cluster-store=consul://192.168.20.20:8500 --cluster-advertise=ens192:2376
--cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的連接地址。
3、重啟docker
systemctl daemon-reload systemctl restart docker.service
4、創建docker網絡
在host1或者host2其中任何一台創建即可,后續consul有自動發現服務
在 host1 中創建 overlay 網絡 ov_net1 (創建網絡的時候可以--subnet指定子網信息,不指定系統自動分配)
[root@ubuntu ~ [host1]]# docker network create -d overlay ov_net1 49a8ea9add6a80d44cbd6becf22d66af40072cf9c3a346d66f94a6e72d8042e5
-d overlay 指定 driver 為 overlay。
[root@ubuntu ~ [host1]]# docker network ls NETWORK ID NAME DRIVER SCOPE d0829fccb85c bridge bridge local f59af6b0b523 host host local 2613e0c2029e none null local 49a8ea9add6a ov_net1 overlay global
此時在host2上docker netwoker ls 會發現和host1一樣,多了個ov_net1的網絡。(自動發現)
5、創建容器
在 host1 運行一個 centos容器bbox1並連接到 ov_net1
[root@ubuntu ~ [host1]]# docker run -itd --name bbox1 --network ov_net1 centos 5246d782fc8fd30890bcf2bb34374c54db3ee277cae585572f4b20129b68e3fe
在 host2 運行一個centos容器bbox2並連接到 ov_net1
[root@ubuntu ~ [host1]]# docker run -itd --name bbox2 --network ov_net1 centos 33f33dc7ce094579269f3137767dc82f7b714e96766de87570a1de8a4eefd640
6、互通測試
此時bbox1容器已經可以ping通bbox2,bbox2也一樣可以ping通bbox1
(直接ping 容器名即可{即bbox1,bbox2})
===========================================================================
方案二、weave
還是以host1和host2為例:
在host1和host2上都安裝weave執行文件
curl -L git.io/weave -o /usr/local/bin/weave chmod a+x /usr/local/bin/weave
1、在host1上啟動weave容器
weave launch --no-detect-tls
2、以weave proxy方式啟動容器webox1
eval $(weave env) docker run --name webox1 -itd centos
3、host2上啟動weave容器並連接到host1
weave launch 192.168.20.21 --no-detect-tls
4、以weave proxy方式啟動容器webox2
eval $(weave env) docker run --name webox2 -itd centos
5、互通測試
此時webox1容器已經可以ping通webox2,webox2也一樣可以ping通webox1
另:也可在weave launch的時候加入--ipalloc-range=192.168.100.0/24 配置weave網段。
還可以在docker run運行一個容器的時候加入變量 -e WEAVE_CIDR=xxx.xxx.xxx.xxx 指定該容器所在的網絡