Docker Swarm命令及使用總結


一、簡介

Docker Swarm 是Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主機抽象為一個整體,並且通過一個入口統一管理這些 Docker 主機上的各種 Docker資源。

 

二、名詞解釋

swarm:集群的管理和編排。docker可以初始化一個swarm集群,其它節點可以加入。
node:每一個docker主機就是一個docker節點,分為 manager 節點和 worker 節點。
manager node:負責執行容器的編排和集群的管理工作,保持並維護swarm處於期望的狀態。swarm可以有多個manager node,他們會自動協調並選舉一個leader執行編排任務。不能沒有manager node。
worker node:接受並執行由manager node派發的任務,並且默認manager node也是一個worker node,不過可以將它設置為manager-only node,讓他只負責編排和管理工作。
service:是指一組任務的集合,服務定義了任務的屬性。
task:是swarm中的最小調度單位,目前來說一個任務就是一個單一的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、如果節點加入集群失敗,需要執行如下操作:

     a、關閉所有主機的防火牆。命令:systemctl stop firewalld
     b、修改主機名(主機名不能一樣)
     c、在 /etc/hosts 文件下,添加三台主機的域名解析

2、擴容時,出現如下界面:

解決辦法:
重啟失敗節點的docker服務:sudo systemctl restart docker
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM