使用Docker Swarm管理Docker集群

什么是Swarm

Swarm 是一个管理Docker集群的工具。Docker Engine 1.12 版本中引入了 swarm 模式,使您能够创建一个或多个 Docker 引擎组成的集群,称为 swarm,swarm 由两种类型节点 manager 和 worker 组成。

使用Docker Swarm管理Docker集群

  • 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 Swarm管理Docker集群

在管理节点中使用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

使用Docker Swarm管理Docker集群

上一篇:复习之async


下一篇:CVE-2020-10204 Nexus Repository Manager 3远程命令执行漏洞复现