docker 環境下創建 overlay 網絡方案


一.環境

三台機器,其中一台安裝 consul(192.168.1.21), 兩台創建網絡(192.168.1.32,33)

二.實現步驟

1.構建環境

1)三台機器部署docker環境

2)選擇一台作為consul服務器,安裝consul;consul 為一個key-value數據庫用於保存網絡狀態信息,其他的支持key-value的軟件有etcd,zookeeper等。

我們這里直接用鏡像方式啟動consul容器,來部署 consul,

docker run -d  -p  8500:8500  -h  consul  --name   consul  progrium/consul  -server  -bootstrap

啟動之后,我們可以用瀏覽器192.168.1.21:8500, 進行查看consul;

3)修改兩台機器的docker daemon  配置文件

/usr/lib/systemd/system/docker.service

在ExecStart=/usr/bin/dockerd 后加入  --cluster-store=consul://192.168.1.21:8500 --cluster-advertise=ens33:2376

其中192.168.1.21為consul 主機, ens33為 consul 主機的網卡

4)到瀏覽器192.168.1.21:8500, 進行查看consul;在 key/value 下發現兩個節點,此為自動注冊到consul數據庫中的節點。

2.構建overlay網絡

1)在一台主機中創建overlay網絡

docker  network  create  -d  overlay  ov_net1

-d 為指定driver為overlay

docker  network ls  查看網絡情況

網絡類型為 global,同時可在另一台主機查看到該網絡,因為創建該網絡時,主機將網絡信息存入 consul中,另一台主機會讀取到新網絡的信息,在主機上對網絡的操作會同步到consul中。

2)在網絡中運行容器

 docker run -itd --name bbox1 --network ov_net1 busybox

查看網絡配置

docker exec bbox1 ip r

會有兩個網卡,一個eth0,連接 overlay網絡, 另一個 eth1,連接主機的docker_gwbridge, 為訪問外網的容器提供出口;

在另一台機器運行容器2,

docker run -itd --name bbox2  --network ov_net1 busybox

docker exec bbox2 ip a

docker exec bbox2 ping -c bbox1  同一個overlay 網絡的容器可以互相ping 通

3)不同overlay中網絡的隔離性

創建一個ov_net2網絡

docker network create -d overlay ov_net2

在該網絡中運行一個容器

docker  run -itd  --name  bbox3  --network  ov_net2

測試該容器是否能ping 通其他容器

docker  exec -it  bbox3  ping  -c  2  bbox1

 不通,說明不同overlay網絡之間是隔離的。

如果要讓兩個 overlay的容器通信,可以將其中的一個容器連到另一個容器所在的overlay,

docker network connect ov_net1 bbox3

測試docker exec -it bbox3 ping -c 2 10.0.0.2 ,網絡為通。10.0.0.2為bbox1的ip地址

4)ip管理

默認分配子網,10.0.X.0/24 ,也可以通過 --subnet 指定ip 范圍

docker  network  create  -d  overlay  --subnet  10.2.0.0/24   ov_net3

 


免責聲明!

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



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