1. 程式人生 > >docker swarm 和compose部署服務,解決跨主機網路問題和ip不固定問題(一)

docker swarm 和compose部署服務,解決跨主機網路問題和ip不固定問題(一)

一  要求: docker版本13以上;compose版本11以上;關閉防火牆和selinux

二  composev3版本加入了很多功能,現在我肯可以很方便的結合docker swarm 和compose來完成不同主機之間的通訊問題

三 準別2臺虛機,安裝docker ,配置docker swarm 叢集,截圖如下:

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
四   本次試驗只是演示環境,用了同一個映象檔案,但是不影響試驗效果

test1 主機compose檔案配置如下

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
注意內容:

1)networks: 在 compose file V3中, 允許我們通過networks關鍵字定義一個基於 Docker0 網路的 subnet。然後將我們的服務新增到這個subnet中。這樣做的好處實現了服務之間的隔離,一旦我們不需要這組服務了,我們可以通過命令“docker-compose down” 解除安裝服務和對應的subnet,他不會對其他的服務造成影響。

docker-compose up -d 生成容器的同時,來看docker的網路變化

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)

test2 compse主機的配置檔案如下

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
注意內容:

1) 由於之前我們test1已經建立了網路,這裡只需要指定external:true (不需要在建立了),在container裡面加入即可

2)我們直接執行 docker-compose up -d 會報錯,內容大致為找不到指定的網路,這是因為我們之前在test1上面建立的network不會自動在更新到test2 上面(官方說法),所以需要我們在test2上面執行一個container讓其加入網路“ceshi_YuGuangWei”

在沒有穿件容器之前,我們來看test2中容器的網路,並沒有ceshi_YuGuangWei網路

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
建立一個帶ceshi_YuGuangWei網路的容器,再來檢視容器的網路

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)

現在,再來執行compose檔案就行了

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
我們更改test2中 容器的nginx首頁的程式碼給為yuguangwei 來訪問以下

在 test1中mysql容器中訪問

 docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
可以看到訪問成功

此種方法不僅可以解決容器之間跨主機網路的問題,也能忽略ip不固定的問題

compse.yml 檔案補充解釋

docker <wbr>swarm <wbr>和compose部署服務,解決跨主機網路問題和ip不固定問題(一)

false代表網橋不存在,啟動容器時自動建立,true代表網橋存在,直接使用,啟動容器是不建立