- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
文章參考 Docker 官方文件與 Youtube 內容撰寫,更多資訊可瀏覽下方參考資料。
環境準備
此情境需要三台虛擬機器(安裝 Ubuntu Server)一台 Swarm Manager,兩台 Swarm Worker。
安裝好 Docker 環境的虛擬機器資訊:
- Operation System
- Ubuntu Server 16.04
- Docker
- 17.06.2-ce
主機名稱 | IP位址 | 備註 |
---|---|---|
Swarm-Manager | 192.168.0.85 | 叢集主機 |
Swarm-Worker1 | 192.168.0.86 | -- |
Swarm-Worker2 | 192.168.0.87 | -- |
建立 Docker Swarm
在 Swarm-Manager 主機執行 Swarm 初始化。
docker swarm init --advertise-addr 192.168.0.85:2377
初始化成功後會輸出加入 Docker Swarm 的指令碼與驗證 token,加入 Worker 節點的時候使用。

Swarm-Manager 主機就成為 Swarm 節點中的 Leader 角色,透過 docker node ls 指令檢視節點資訊。
docker node ls

在 Swarm-Worker1, Swarm-Worker2 主機使用先前輸出的「docker swarm join ... 」指令碼加入 Swarm 叢集。
docker swarm join --token {初始化 swarm 會顯示的字串} {主機IP位址+連接埠}


加入完成後在 Swarm-Manager 主機檢視目前節點資訊。
docker node ls

Swarm-Manager, Swarm-Worker1, Swarm-Worker2 三台主機已經成功建立為 Docker Swarm 叢集:Swarm-Manager 角色為 Manager(Leader),Swarm-Worker1, Swarm-Worker2 為 Worker。
Docker Swarm 的管理需要在 Manager 主機執行,Worker 執行會顯示權限不足。
驗證 Swarm 架構
docker swarm 環境建立完成後,透過建立 nginx 服務來驗證 swarm 執行狀態。
要在 Docker Swarm 建立容器,需使用 docker service 指令。docker run 會在執行指令的 docker 伺服器執行 container。
在 Docker Swarm Manager 建立 nginx 的服務,設定為三個副本(replicas)。
docker service create --replicas 3 --publish 8080:80 --name swarm-nginx nginx

--publish 指令為將外部位置的 8080 埠對應到 service 的 80 埠,類似 docker run -p {port}:{port}
檢視 Docker Swarm 狀態
docker service list

REPLICAS 欄位顯示執行中的副本(replicas)與最大副本數,副本的啟用時間因 service 使用映像檔有所不同
檢視服務的狀態,此指令會顯示節點內容
docker service ps swarm-nginx

此資訊顯示 swarm-nginx 分別再三個節點中掛載一個 nginx container
三個節點的 Container 就會被執行起來後,可分別進入虛擬機器檢視 Container 的執行狀態
docker ps -a



進入虛擬機器變更 nginx 預設網頁內容,來測試瀏覽器連線到的 Swarm 節點。
在副本(replicas)設定進行異動或是機器調整時,本次異動項目將不會被保留



使用瀏覽器刻意多次進入 Swarm 的 nginx 服務時,會顯示不同的網頁內容。
進入不同的位址也會顯示不同的內容



docker 的官方文件有架構示意圖可以參考。
更多 Docker Swarm 相關資訊與進階指令碼介紹請參考官方文件內容。
留言
張貼留言