延續昨天介紹Docker Network 的部份,已經實作了none、container、host、bridge 的模式,今天要來實作的是overlay 網絡模式,這種模式主要是在不同的實體主機內的Container 之間可以互相的溝通,如下圖:
上圖主要是說明 Host1 實體主機裡面有 Container1,然後 Host2 實體主機裡面有 Container2,可以透過 Docker Overlay 的 Network 的模式將 Container1 和 Container2 連接起來做溝通。另外 Consol 是一個存放連線資訊的資料庫,在使用 overlay 時必需要在 Docker 設定,這樣才能存放 overlay 網絡模式的連線資訊。
另外在使用 overlay 網絡模式時,要先確認 Linux Kernel 的版本。目前我使用的版本是 3.19.8 是可以正常執行的。
Example:
使用 Docker Overlay的網絡模式,實作不同的實體主機之間的 container 可以互相的連接,步驟如下:
切換到 root 使用者,修改 Host1 的 Docker 設定,指令如下:
設定檔如下:
主要的設定就是 cluster-store 和 cluster-advertise,分別是要連接到 consul 的 service,取得 overlay 網絡模式的連線資訊,以及設定可以讓不同實體主機連線的網卡。
2. 重新啟動 Host1 的 Docker Service 指令如下:
3. 在 Host1 使用啟動 docker container 的方式啟動 consul service,指令如下
4. 在 Host1,使用 docker network 指令建立一個 overlay1 的網絡,指令如下
使用 docker network ls,查看建立之後的結果,畫面如下
5. 在 Host1 啟動一個連接到 overlay1 的 container,指令如下
6. 開一個新視窗,到 Host2 修改 Docker 的設定如下
設定如下:
以上的設定和 Host1 是很像的。
7. 在 Host2 上重新啟動 Docker service 指令如下
8. 在 Host2 上,使用 docker network ls 指令確認是否有連到 consol service,畫面如下
9. 在 Host2 上啟動一個 container,並且連到 overlay1 的網絡,指令如下
10. 測試在 container1 ping 到 container2 的 IP
container2 的畫面如下:
container1 的畫面如下:
今天介紹主要是透過 Docker 的 Overlay Network 模式,把不同實體主機上的 Container 連接在一起,這樣就可以把 Container 分散在不同的實體機器上執行。
閱讀更多 Java高級開發工程師 的文章