docker swarm 和compose部署服務,解決跨主機網路問題和ip不固定問題(一)
一 要求: docker版本13以上;compose版本11以上;關閉防火牆和selinux
二 composev3版本加入了很多功能,現在我肯可以很方便的結合docker swarm 和compose來完成不同主機之間的通訊問題
三 準別2臺虛機,安裝docker ,配置docker swarm 叢集,截圖如下:
四 本次試驗只是演示環境,用了同一個映象檔案,但是不影響試驗效果
test1 主機compose檔案配置如下
1)networks: 在 compose file V3中, 允許我們通過networks關鍵字定義一個基於 Docker0 網路的 subnet。然後將我們的服務新增到這個subnet中。這樣做的好處實現了服務之間的隔離,一旦我們不需要這組服務了,我們可以通過命令“docker-compose down” 解除安裝服務和對應的subnet,他不會對其他的服務造成影響。
docker-compose up -d 生成容器的同時,來看docker的網路變化
1) 由於之前我們test1已經建立了網路,這裡只需要指定external:true (不需要在建立了),在container裡面加入即可
2)我們直接執行 docker-compose up -d 會報錯,內容大致為找不到指定的網路,這是因為我們之前在test1上面建立的network不會自動在更新到test2 上面(官方說法),所以需要我們在test2上面執行一個container讓其加入網路“ceshi_YuGuangWei”
在沒有穿件容器之前,我們來看test2中容器的網路,並沒有ceshi_YuGuangWei網路
建立一個帶ceshi_YuGuangWei網路的容器,再來檢視容器的網路
我們更改test2中 容器的nginx首頁的程式碼給為yuguangwei 來訪問以下
在 test1中mysql容器中訪問
此種方法不僅可以解決容器之間跨主機網路的問題,也能忽略ip不固定的問題
compse.yml 檔案補充解釋