Docker Swarm

Docker Swarm容器管理 規畫部署一次傾囊相授

2018-06-04
目前主要的容器管理技術是以Docker為主流,其中Google Kubernetes雖是最盛行的容器調度平台,但另一方面,Docker Swarm卻占有Docker原生與組態設定較為簡單的優勢,所以也受到不少使用者的支持。本文將介紹Docker Swarm容器調度管理平台的特色,並實際示範如何部署及設定。

開啟PowerShell指令視窗,依序鍵入「Install-Module -Name DockerMsftProvider -Repository PSGallery -Force」和「Install-Package -Name docker -ProviderName DockerMsftProvider -Force」指令,然後執行「Restart-Computer -Force」指令,重新啟動Windows Server 2016主機。


待3台Windows Server 2016主機重新啟動後,確認是否已經順利運作Docker環境,接著在PowerShell指令視窗中執行「docker version」指令,就能夠看到在本文實作環境中所安裝的Docker引擎以及Docker用戶端版本為「17.06.2-ee-7」,如圖5所示。


▲圖5 確認Windows Server 2016主機Docker運作環境版本資訊。

建置Docker Swarm叢集

順利地為3台Windows Server 2016安裝好Docker運作環境後,在開始建置Docker Swarm叢集之前,確保3台Windowsd Server 2016主機已經開啟好Docker Swarm叢集相關防火牆連接埠。

管理人員可透過PowerShell指令「New-NetFirewallRule -DisplayName 'Docker Swarm' -Profile @('Domain', 'Private', 'Public') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('2377', '7946')」及「New-NetFirewallRule -DisplayName 'Docker Swarm' -Profile @('Domain', 'Private', 'Public') -Direction Inbound -Action Allow -Protocol UDP -LocalPort @('4789', '7946')」,快速開啟相關防火牆連接埠,如圖6所示。


▲圖6 透過PowerShell開啟Docker Swarm叢集相關防火牆連接埠。

由於在本文實作環境中並沒有建置DNS名稱解析伺服器,所以修改3台Docker Swarm節點主機的hosts名稱解析設定檔,檔案路徑為「C:\Windows\System32\drivers\etc\hosts」,在hosts名稱解析設定檔內容中加上3筆Docker Swarm節點主機解析紀錄。完成組態設定修改的動作後,執行ping指令確認DNS名稱解析動作正確無誤,如圖7所示。


▲圖7 組態設定3台Docker Swarm節點主機的hosts名稱解析設定檔。

在本文實作環境中,將採用「SwarmHost01 (10.10.75.21)」主機,當成Docker Swarm叢集中「第1台」初始化的Docker Swarm節點主機。在PowerShell指令視窗內執行「docker swarm init --advertise-addr=10.10.75.21 --listen-addr 10.10.75.21:2377」指令,讓SwarmHost01主機執行Docker Swarm叢集初始化工作任務。

當完成Docker Swarm叢集初始化的動作,執行「docker node ls」指令進行確認,可以看到目前在Docker Swarm叢集中只有1台主機,也就是剛才執行初始化動作的SwarmHost01主機,如圖8所示。


▲圖8 SwarmHost01主機執行Docker Swarm叢集初始化工作任務。


此時可以觀察SwarmHost01主機,在建立Docker Swarm叢集之後主機發生了哪些變化。在主機網路方面,將會看到SwarmHost01主機原本的「實體網路卡」,也就是剛才指定10.10.75.21 IP位址的網路卡已經轉變成「HNSTransparent」,並且在Docker網路環境內將會產生名稱為「ingress」的「overlay」網路,如圖9所示。


▲圖9 Docker Swarm叢集初始化完成後SwarmHost01主機運作環境的轉變。


加入其他Docker Swarm叢集節點主機

當SwarmHost01執行初始化作業順利建立Docker Swarm叢集之後,管理人員應該會發現系統回應後續加入Docker Swarm叢集節點主機所使用的「Token」。

在預設情況下,Docker Swarm叢集僅會顯示「Worker角色」所使用的Token,而不顯示Manager角色所要加入Docker Swarm叢集時的Token。同時,倘若管理人員忘記將剛才加入的Token記錄下來時,也可以隨時使用Docker指令重新顯示Manager/Worker角色所使用的Token。

在PowerShell指令視窗中執行「docker swarm join-token worker」指令,即可顯示Docker Swarm節點主機所要加入Docker Swarm叢集時擔任Worker角色使用的指令以及Token,而執行「docker swarm join-token manager」指令,則是顯示擔任Manager角色所使用的指令和Token,如圖10所示。


▲圖10 顯示Docker Swarm節點主機加入Docker Swarm叢集時使用的Token。



追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!