使用Docker Swarm管理Docker集群


什么是Swarm

Swarm 是一個管理Docker集群的工具。Docker Engine 1.12 版本中引入了 swarm 模式,使您能夠創建一個或多個 Docker 引擎組成的集群,稱為 swarm,swarm 由兩種類型節點 manager 和 worker 組成。

  • Manager node(管理節點):維護集群狀態,選舉一個leader節點去執行調度任務等。
  • Worker node(工作節點):接收和執行任務。

參考文檔:https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/

Swarm集群搭建

  1. 准備三台安裝了docker機器
節點角色 名稱 IP地址
Manager manager1 192.168.20.201
Worker worker1 192.168.20.202
Worker worker2 192.168.20.203
  1. 在manager1節點運行以下命令來創建一個新的集群
docker swarm init --advertise-addr <MANAGER-IP>
  • --advertise-addr:將該IP地址的機器設置為集群管理節點,集群中的其他節點必須能夠通過IP訪問管理節點

示例:

運行docker swarm init命令后可以看到輸出內容如下,顯示worker和manager加入Swarm集群的命令。

[root@manager1 ~]# docker swarm init --advertise-addr 192.168.20.201
Swarm initialized: current node (tw4es24w9z3vziwv204q54401) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-52qk07cimds6kl64wwsg3jmv0esgrxxhs6eft5rjht7f52h8a7-dvessatunzkhnxs2wc57omyab 192.168.20.201:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

運行docker info以查看 swarm 的當前狀態:

docker info

運行docker node ls命令查看節點信息:

[root@manager1 ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
tw4es24w9z3vziwv204q54401 *   manager1            Ready               Active              Leader              19.03.12
  1. worker節點加入集群

在worker1和worker2節點運行如下命令加入Swarm:

docker swarm join --token SWMTKN-1-52qk07cimds6kl64wwsg3jmv0esgrxxhs6eft5rjht7f52h8a7-dvessatunzkhnxs2wc57omyab 192.168.20.201:2377

在管理節點manager1,查看集群的節點信息:

[root@manager1 ~]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
tw4es24w9z3vziwv204q54401 *   manager1            Ready               Active              Leader              19.03.12
a8z74l8z46bjngnvjk15jctjb     worker1             Ready               Active                                  19.03.12
p5210ijqg2g94b6xqug07d4ej     worker2             Ready               Active                                  19.03.12

部署服務到Swarm集群

當您將服務部署到 swarm 時,swarm 管理器接受您定義的服務。然后它將集群中節點上的服務作為一個或多個副本任務進行調度。

在管理節點中使用docker service create命令創建nginx服務:

docker service create --replicas 1 --name mynginx -p 80:80 nginx
  • --replicas:指定運行實例的個數

查看集群中的服務:

[root@manager1 ~]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
m1a6i7tqdt7j        mynginx             replicated          1/1                 nginx:latest        *:80->80/tcp

訪問manager1、worker1,worker2地址都可以看到成功打開nginx頁面。

常用命令

docker swarm常用命令

查看管理節點和工作節點的token:

docker swarm join-token manager #查看管理節點的 token
docker swarm join-token worker  #查看工作節點的 token

Manager節點退出Swarm集群:

docker swarm leave

強制退出需要加 --force 選項

docker swarm leave --force

Worker節點退出Swarm集群,在工作節點運行命令:

docker swarm leave

docker node常用命令

節點降級,由管理節點降級為工作節點:

docker node demote

節點升級,由工作節點升級為管理節點:

docker node promote

刪除節點:

docker node rm

docker service常用命令

查看服務詳情:

docker service inspect

查看服務日志:

docker service logs

更新服務:

docker service update

刪除服務:

docker service rm

設置服務個數:

docker service scale


免責聲明!

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



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