目录
Swarm基本概念
节点
服务和任务
创建Swarm集群
创建管理节点
增加工作节点
查看集群
部署服务
新建服务
查看服务
服务伸缩
增加服务
减少服务
删除服务
Swarm基本概念
节点
节点分为管理节点(manager)和工作节点(worker)
管理节点
管理节点用于Swarm集群的管理,docker swarm命令大多只能在管理节点执行。一个swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader
工作节点
工作节点是任务执行节点,管理节点将服务下发至工作节点执行,管理节点也默认为工作节点。节点退出集群命令 docker swarm leave 可以在工作节点执行
服务和任务
任务(Task) 是Swarm中的最小调度单位,目前来说是一个单一的容器
服务(Service)是指一组任务的集合,服务定义了任务的属性。服务有如下两种模式:
- replicated services按照一定规则在各个工作节点上运行指定个数的任务
- global services每个工作节点上运行一个任务
两种模式通过docker service create的--mode参数指定
创建Swarm集群
创建管理节点
本次创建包含一个管理节点和两个工作节点的最小Swarm集群
在192.168.117.131下执行docker swarm init命令的节点自动成为管理节点
[root@localhost ~]# docker swarm init --advertise-addr 192.168.117.131
Swarm initialized: current node (mn0xmlobseurosjh9ylsex0uq) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-3x9heaku0p7o99e56rwng3opbvtgbrtfnpavdewbrpgu8joojn-cjv34fhoz2aaqeewe6ga0ceof 192.168.117.131:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
增加工作节点
在192.168.117.130和192.168.117.132下执行如下命令使之成为工作节点加入到集群中
docker swarm join --token SWMTKN-1-3x9heaku0p7o99e56rwng3opbvtgbrtfnpavdewbrpgu8joojn-cjv34fhoz2aaqeewe6ga0ceof 192.168.117.131:2377
成功会有如下反应
查看集群
在管理节点执行如下命令
[root@localhost ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
mn0xmlobseurosjh9ylsex0uq * localhost.localdomain Ready Active Leader 24.0.7
pifvf9mr1ggvez9o92067gv60 localhost.localdomain Ready Active 24.0.6
xdedgykahub32jyh09yeupbim localhost.localdomain Ready Active 24.0.6
部署服务
新建服务
在创建的Swarm集群中运行nginx服务
[root@localhost ~]# docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine
hzb8ckdfjjrq7lmrgplhclblm
overall progress: 3 out of 3 tasks
1/3: running
2/3: running
3/3: running
verify: Service converged
发现三种ip节点都可以访问nginx
查看服务
查看当前Swarm集群运行的服务
[root@localhost ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
hzb8ckdfjjrq nginx replicated 3/3 nginx:1.13.7-alpine *:80->80/tcp
查看某个服务的详情
[root@localhost ~]# docker service ps nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
s18jve694hof nginx.1 nginx:1.13.7-alpine localhost.localdomain Running Running 15 minutes ago
kukdiwkwzbk0 nginx.2 nginx:1.13.7-alpine localhost.localdomain Running Running 15 minutes ago
dutte36gcuqq nginx.3 nginx:1.13.7-alpine localhost.localdomain Running Running 15 minutes ago
查看某个服务的日志
[root@localhost ~]# docker service logs nginx
服务伸缩
增加服务
[root@localhost ~]# docker service scale nginx=5
nginx 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
[root@localhost ~]#
减少服务
[root@localhost ~]# docker service scale nginx=2
nginx scaled to 2
overall progress: 2 out of 2 tasks
1/2: running
2/2: running
verify: Service converged
[root@localhost ~]#
删除服务
[root@localhost ~]# docker service rm nginx
nginx