docker跨主機互聯


以下內容只是命令,原理自行百度,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 指定該容器所在的網絡

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM