Docker跨主機網絡實踐


Docker使用中網絡管理是最麻煩的,在項目初始化前期就需要進行合理的規划,如果在比較理想的單主機的網絡通信是比較簡單的,但如果涉及到跨主機的網絡就需要使用docker自帶的overlay network或者第三方的網絡插件,本文是以直接使用自帶插件的方式實現容器跨主機訪問。

基礎條件
1.docker版本需要在1.9
2.Linux內核版本3.19以上(實際操作的centos內核是3.10,並未出現異常,需后期核實)
3.跨主機之間可以正常通信

consul服務搭建
Docker跨主機通信需要key value的服務來保存網絡的信息,有很多可以選擇的服務,如consul,etcd,zookeeper等都可以,本文是以官方推薦的consul服務作為key value的服務。

docker run -d --restart="always" --publish="8500:8500" --hostname="consul" --name="consul" index.alauda.cn/sequenceiq/consul:v0.5.0-v6 -server -bootstrap

 國外的鏡像拉取很慢,選用了國內的靈雀雲作為服務。

配置改造
因為已經使用了docker1.19版本了,在centos系統的/etc/sysconfig/docker已經不存在,但可以在/etc/systemd/system/multi-user.target.wants/docker.service中需要新增2個配置項
1.--cluster-store=consul://10.19.137.180:8500  #內網的IP地址加上consul的端口,提供給要加入跨網絡通信的服務地址
2.--cluster-advertise=eth0:2375                         #以守護進程方式啟動
在另外一台的服務器同樣填寫自身通信的網卡信息以及consul的服務地址,修改完成后服務器需要重新加載配置和重啟docker容器。

systemctl daemon-reload
systemctl restart docker

創建overlay網絡
使用命令創建overlay類別的網絡

docker network create -d overlay leo

使用docker network ls命令后會發現兩台服務器已經有leo這個網絡了,說明一切順利

測試網絡
分別在兩台服務器創建docker容器進行測試
服務器1

docker run -itd --name=leo_zhou1 --net=leo  busybox

服務器2

docker run -itd --name=leo_zhou2 --net=leo  busybox

進入leo_zhou1測試是否可以ping通leo_zhou2


免責聲明!

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



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