先設定並建立好三台以上主機
假設命名為
Node-01 IP為192.168.2.1
Node-02 IP為192.168.2.2
Node-03 IP為192.168.2.3
並且我們準備使用Node-01這台機器作為 manager控制主機
Node-02 及 Node-03為Worker工作機
SSH進入Node-01內下達指令
docker swarm init --advertise-addr=192.168.2.1
執行指令
docker swarm join-token worker
即可顯示Docker Swarm節點主機所要加入Docker Swarm叢集時擔任Worker角色使用的指令以及Token
而執行指令
docker swarm join-token manager
則是顯示擔任Manager角色所使用的指令和Token
於Node-01使用指令docker swarm join-token worker產生的整串指令複製貼上到Node-02及Node-03來加入cluster
在前述說明Docker Swarm容器叢集運作架構時,已經說明叢集中有2種角色,分別是「Manager」和「Worker」。當Docker Swarm節點主機加入Docker Swarm叢集後,倘若管理人員需要調整Docker Swarm節點主機角色,可以在擔任「Manager」角色的Docker Swarm節點主機上執行Docker指令「docker node promote/demote」,即可轉換Docker Swarm節點主機的角色。
docker node promote $NODE-HOSTNAME
docker node demote $NODE-HOSTNAME
至此,已經順利建置好Docker Swarm叢集運作環境,接下來便可以進行部署「服務」(Services)的動作。值得注意的是,在「單機」的Docker容器運作環境中,管理人員可以透過「docker run」指令來建立容器,然而在Docker Swarm叢集環境中則必須執行「docker service create」指令,建立的容器才會順利部署至Docker Swarm叢集高可用性環境中
列出目前叢集狀態
docker node ls
範例
docker-stack.yml檔案內容
version: "3.9"
services:
registry:
image: registry:2
ports:
- 5000:5000
deploy:
restart_policy:
condition: none
mode: replicated
replicas: 1
deploy: 下的restart_policy為指定容器重啟動規範
若設定為服務型態則避免設定為always,否則服務將在容器停止後另行開啟一個新的容器
而原本舊有容器在重啟動後因為已有相同容器運作而會轉為shutdown模式,並卡在列表上無法刪除
因此建議設定為condition: none (完全禁止容器於停止後自動重新啟動)
交由docker service服務來管理容器
constraints:
可規範此容器部屬至某個範圍
例如
deploy:
placement:
constraints:
- node.role == manager
為只部屬至設定權限具有manager的node上
deploy:
placement:
constraints:
- node.hostname==node-01
為只部屬至node-01這台機器上
—
輸入指令部屬服務
docker stack deploy -c docker-stack.yml registry
輸入指令查看服務
docker stack ls
刪除服務
docker stack rm registry
範例2
docker-stack.yml內容
version: "3"
services:
Portainer:
image: "cr.portainer.io/portainer/portainer-ce"
volumes:
- /var/run/docker/sock:/var/run/docker.sock
ports:
- "8000:8000"
- "9443:9443"
deploy:
placement:
constraints:
- node.role == manager
輸入指令部屬服務
docker stack deploy -c docker-stack.yml Portainer
docker swarm 刪除節點 (解散叢集)
清空叢集內的集群容器 。
docker node update –availability drain g36lvv23ypjd8v7ovlst2n3yt
主動離開叢集,讓節點處於down狀態,才能删除
docker swarm leave
刪除指定節點 (管理節點上操作指令)
docker node rm HOSTNAME
管理節點,解散叢集
docker swarm leave --force
發佈留言
很抱歉,必須登入網站才能發佈留言。