一、簡介
Docker Swarm 是Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主機抽象為一個整體,並且通過一個入口統一管理這些 Docker 主機上的各種 Docker資源。
二、名詞解釋
三、准備
虛擬機三台,分別安裝Docker並啟動服務。服務網格信息如下:
主機名 | 操作系統 | IP | Node |
vm-xwj100 | Centos7.6 | 192.168.20.100 | manager |
vm-xwj101 | Centos7.6 | 192.168.20.101 | worker |
vm-xwj102 | Centos7.6 | 192.168.20.102 | worker |
三、Swarm命令
1、初始化manager節點:
docker swarm init --advertise-addr 192.168.20.100
會看到初始化成功,當前節點為manager節點。並且也提示了增加其它worker或者manager節點的命令,如下所示:
2、在 vm-xwj101 和 vm-xwj102 主機上,作為一個worker節點加入swarm集群(復制上面的信息):
docker swarm join --token SWMTKN-1-0szs8b7mg7ui5wtxlqcsp8ifr5yguvhw8314xd8v7o1zkro2t4-2qt8j8uqikxtb7tkdrypwqbw0 192.168.20.100:2377
3、在manager節點,執行命令獲取令牌(其它節點可以通過該令牌加入到集群中):
docker swarm join-token manager #作為一個manager加入
docker swarm join-token worker #作為一個worker加入
可以看到worker節點的令牌,和第一步是一樣的
4、當前節點離開集群:
docker swarm leave
四、node命令
注意:只有 manager 節點才可以執行 docker node 相關命令
1、查看集群中的節點信息:
docker node ls
2、刪除集群中的節點:
docker node rm 節點名稱
可選參數:
-f #強制刪除節點(沒有該參數只能刪除已下線的節點)
3、將節點從 worker 升級為 manager:
docker node promote 節點名稱
4、將節點從 manager 降級為 worker:
docker node demote 節點名稱
五、service命令
注意:只有 manager 節點才可以執行 docker service 相關命令
1、啟動服務:
docker service create [可選參數] 鏡像名稱
可選參數:
- --name my-nginx #設置容器名稱
- --replicas 5 #副本數量(默認為1)
- -p #指定服務端口(主機端口:容器端口)
2、查看正在運行的服務
docker service ls
可以看到當前服務有3個副本以及鏡像等信息
3、查看某個服務運行狀態
docker service ps 服務名稱
可以看到每個節點上都有一個docker容器在運行(這個是隨機分配的)。在每個節點上,直接docker ps 也可以看到容器的運行情況
4、停止並刪除某個服務(刪除服務后,鏡像也會全部被刪除):
docker service rm 服務名稱
5、修改某個服務副本數(擴縮容):
docker service update --replicas 3 服務名稱
6、對某個服務擴縮容:
docker service scale 服務名稱=副本數
六、測試
集群中的任何一台主機都可以訪問容器內的應用。在瀏覽器中分別訪問100、101、102三台主機的8888端口,都可以看到nginx的頁面:
七、踩過的坑
1、如果節點加入集群失敗,需要執行如下操作:
2、擴容時,出現如下界面: