Docker Swarm 是docker公司推出的官方容器集群管理平台
Docker Swarm工作原理
如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。
- swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
- work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

使用Swarm
1 创建集群
--advertise-addr: 指定服务鉴定的地址和端口 默认是2377端口
1.10是管理节点
[root@server01 ~]# docker swarm init --advertise-addr 192.168.1.10 Swarm initialized: current node (pfkfgbswgt2tveahp1y3l7k0o) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-466otsvq7y06udqj1paode63suakgfuvdecniaqv0k2rlmsbw5-doy6vtd82sy5hf95h4uo0nxde 192.168.1.10:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
2 查看集群信息
[root@server01 ~]# docker info
Swarm: active NodeID: pfkfgbswgt2tveahp1y3l7k0o Is Manager: true ClusterID: zog4vnk3x9zcawuh2i05cyyap Managers: 1 Nodes: 1 Default Address Pool: 10.0.0.0/8 SubnetSize: 24 Data Path Port: 4789 Orchestration: Task History Retention Limit: 5
3 加入进群
将node2 加入swarm集群
[root@node2 ~]# docker swarm join --token SWMTKN-1-466otsvq7y06udqj1paode63suakgfuvdecniaqv0k2rlmsbw5-doy6vtd82sy5hf95h4uo0nxde 192.168.1.10:2377 This node joined a swarm as a worker.
4 查看集群中加入的节点信息
[root@server01 ~]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION lhyuotw9nzmepjeylikotxgar node2 Ready Active 19.03.8 pfkfgbswgt2tveahp1y3l7k0o * server01 Ready Active Leader 19.03.7
5 使用集群服务
5.1 在管理节点执行docker service 命令快速创建一个应用服务,并制定服务的复制份数为2
[root@server01 ~]# docker service create --replicas 2 --name mynginx nginx:latest
w1zsk5bn7uuummp21ystcgxr2
overall progress: 2 out of 2 tasks
1/2: running
2/2: running
verify: Service converged
5.2 查看服务
[root@server01 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
w1zsk5bn7uuu mynginx replicated 2/2 nginx:latest
查看服务的具体信息:
[root@server01 ~]# docker service inspect --pretty mynginx
ID: w1zsk5bn7uuummp21ystcgxr2
Name: mynginx
Service Mode: Replicated
Replicas: 2
Placement:
UpdateConfig:
查看容器运行情况
[root@server01 ~]# docker service ps mynginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS gbud82g0qoie mynginx.1 nginx:latest server01 Running Running 4 minutes ago cyili1uo2gpw mynginx.2 nginx:latest node2 Running Running less than a second ago
5.3 扩容/缩容服务
docker service scale
[root@server01 ~]# docker service scale mynginx=5
mynginx 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
目前有5个nginx容器在运行
[root@server01 ~]# docker service ps mynginx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS gbud82g0qoie mynginx.1 nginx:latest server01 Running Running 8 minutes ago cyili1uo2gpw mynginx.2 nginx:latest node2 Running Running less than a second ago f6wijveymdhi mynginx.3 nginx:latest server01 Running Running 34 seconds ago pv7pm0navtiy mynginx.4 nginx:latest node2 Running Running less than a second ago xqa6lif2ebhj mynginx.5 nginx:latest server01 Running Running 34 seconds ago
6 node 离开swarm集群,node2上执行!
[root@node2 ~]# docker swarm leave
Node left the swarm.