2014年底,Docker公司着手设计了一组容器的解决方案:Machine、Swarm、Compose。在这个方案中,Machine是用于主流虚拟机和云平台快速搭建和创建 Docker环境的工具,支持在创建的节点上自动部署Swarm。当时的Swarm是一款整合跨节点网络的集群式容器运维管理服务,它利用 Docker守护进程的 API ,将多节点的计算资源进行汇总,并将目标设置为Swarm服务的 IP 和端口,使得可以像操作单个节点的Docker 服务一样来操作整个容器集群。这种方式有先天性的局限性,比如在单节点 Docker中并没有为服务高可用而设计的副本集和负载均衡等概念,也不存在服务网络管理和跨节点数据存储的问题。
➜ swarm vagrant ssh swarm-manager [vagrant@swarm-manager ~]$ docker swarm init --advertise-addr=192.168.10.11 Swarm initialized: current node (z79giyqd1mkutnlshuucoqwn0) is now a manager.
To add a worker to this swarm, run the following command:
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
将Worker1节点加入集群:
1 2 3
➜ swarm vagrant ssh swarm-worker1 [vagrant@swarm-worker1 ~]$ docker swarm join --token SWMTKN-1-0asyz8unumzj8qbardoxo4wkh03wizp3stapr9kux9yiiufvnu-7daydi586pedk0unlkowcwr02 192.168.10.11:2377 This node joined a swarm as a worker.
将Worker2节点加入集群:
1 2 3
➜ swarm vagrant ssh swarm-worker2 [vagrant@swarm-worker2 ~]$ docker swarm join --token SWMTKN-1-0asyz8unumzj8qbardoxo4wkh03wizp3stapr9kux9yiiufvnu-7daydi586pedk0unlkowcwr02 192.168.10.11:2377 This node joined a swarm as a worker.
在Manager中查看集群信息:
1 2 3 4 5
[vagrant@swarm-manager ~]$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION z79giyqd1mkutnlshuucoqwn0 * swarm-manager Ready Active Leader 18.05.0-ce w9gz1cmu756ydzlas0u2uhkpm swarm-worker1 Ready Active 18.05.0-ce ajeyxpm0mn058vgn741n3hd4w swarm-worker2 Ready Active 18.05.0-ce
[vagrant@swarm-manager ~]$ docker service create --name bbox busybox sh -c "while true;do sleep 3600;done"
查看创建的服务:
1 2 3
[vagrant@swarm-manager ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS 5rtehf1xpr0y bbox replicated 1/1 busybox:latest
replicated: 指服务可以进行水平扩展。
查看服务的任务信息:
1 2 3
[vagrant@swarm-manager ~]$ docker service ps bbox ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS z5hdgkdnc90v bbox.1 busybox:latest swarm-manager Running Running 12 minutes ago
对服务进行扩展:
使用 docker service scale命令来对服务进行扩展:
1 2 3 4 5 6 7 8 9
[vagrant@swarm-manager ~]$ docker service scale bbox=5 bbox scaled to 5 overall progress: 5 out of 5 tasks 1/5: running [==================================================>] 2/5: running [==================================================>] 3/5: running [==================================================>] 4/5: running [==================================================>] 5/5: running [==================================================>] verify: Service converged
扩展完成后,列出服务的详细信息:
1 2 3
[vagrant@swarm-manager ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS 5rtehf1xpr0y bbox replicated 5/5 busybox:latest