Docker Swarm和Docker Compose都是由Docker官方提供的容器编排工具。它们之间的区别在于,Docker Compose主要用于在单个服务器或主机上创建多个容器,而Docker Swarm则可以在多个服务器或主机上创建容器集群服务。特别是在微服务的部署场景下,Docker Swarm显然更为适用,因为它能够实现在分布式环境中轻松管理和扩展容器服务。
https://www.linuxprobe.com/swarm-swarmkit.html
https://sreeninet.wordpress.com/2016/07/14/comparing-swarm-swarmkit-and-swarm-mode/
节点 | 角色 | IP |
---|---|---|
node1 | manager | 192.168.0.13 |
node2 | worker | 192.168.0.12 |
node3 | worker | 192.168.0.11 |
这里我们使用在线服务: https://labs.play-with-docker.com/
查看docker engine是否已激活swarm模式
docker info | grep Swarm
初始化一个swarm集群
[node1] (local) root@192.168.0.13 ~
$ docker swarm init --advertise-addr 192.168.0.13
Swarm initialized: current node (kmi05q0oc98hykhpjcd2kcbn2) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0fta3d58gkcrqp7tf9u5lbhfr7cfilzzp875ixzxswlnep08pa-2hw90l3ykhsltn1hmv6s89ng2 192.168.0.13:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
#再次查看token
docker swarm join-token manager
加入一个已经存在的swarm集群
docker swarm join --token SWMTKN-1-0fta3d58gkcrqp7tf9u5lbhfr7cfilzzp875ixzxswlnep08pa-2hw90l3ykhsltn1hmv6s89ng2 192.168.0.13:2377
和node1节点的操作一致
以下操作基于 manager 节点
#发布一个服务到集群
docker service create --replicas 1 --name helloworld alpine ping docker.com
#服务列表
docker service ls
#查看服务运行在哪个节点
docker service ps helloworld
#服务详情
docker service inspect --pretty helloworld
#容器列表
docker ps
#扩容
docker service scale helloworld=5
#删除服务
docker service rm helloworld
再发布一个服务到集群
docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6
将redis:3.0.6滚动升级为redis:3.0.7
docker service update --image redis:3.0.7 redis
#节点列表
docker node ls
#清空一个节点
docker node update --availability drain node2
#节点详情
docker node inspect --pretty node2
#恢复一个节点
docker node update --availability active node2
#将应用程序部署到 Swarm
docker stack deploy -c bb-stack.yaml demo
#列出服务
docker service ls
#移除服务
docker stack rm demo
https://blog.csdn.net/u022812849/article/details/134006815
https://docs.docker.com/engine/swarm/
https://docs.docker.com/compose/compose-file/compose-file-v3/#deploy