0%

Docker Swarm使用

原理

swarm 集群由管理节点(manager)和工作节点(work node)构成。

  • swarm manager:负责整个集群的管理工作,包括集群配置、服务管理等所有跟集群有关的工作。
  • work node:主要负责运行相应的服务来执行任务

初始化 swarm 集群

在一台主机上执行以下命令初始化集群, 这台主机就是集群的管理节点

1
docker swarm init --advertise-addr 192.168.99.107  # 这里的IP是管理节点的IP

输出结果:

1
2
3
4
Swarm initialized: current node (dlkndguzu1qburlzblvmym828) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

为集群添加 work node

在另一条主机上执行以下命令,将该主机作为工作节点添加到上一步创建的集群中

1
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377

查看集群信息

1
docker info

查看节点信息

1
docker node ls

停止某个节点接收新的任务

1
docker node update --availability drain swarm-worker1

重新激活节点

1
docker node update --availability active swarm-worker1

部署服务到集群中

1
docker service create --replicas 1 --name helloworld alpine ping docker.com

查看服务部署情况

查看服务的基本信息(包括运行在哪个节点)

1
docker service ps helloworld

查看服务的具体信息

1
docker service inspect --pretty helloworld

扩展集群服务

1
docker service scale helloworld=2

滚动升级服务

1
docker service create --replicas 1 --name redis --update-delay 10s redis:3.0.6
1
docker service update --image redis:3.0.7 redis

删除服务

1
docker service rm helloworld