docker教程之-docker swarm常用操作

docker service 命令用来管理docker swarm集群中的服务,该命令只能运行在管理节点上,是docker swarm的命令行工具

docker service 常用命令

创建服务

1
docker service create --name nginx --replicas 2

更新服务

1
2
3
#格式
#docker service update --image 镜像地址 $server_name
docker service update --with-registry-auth --image nginx:1.19.1 nginx

查看服务

1
2
3
docker service ls
#搜索某个服务
docker service ps nginx

扩展伸缩服务,即对服务运行数量进行调整

1
docker service scale nginx=4

删除服务

1
docker service rm nginx

显示详细信息

1
docker service inspect nginx

查看某个服务的日志

1
docker service logs nginx

docker stack常用命令

上面介绍了docker swarm的命令行管理方式,而docker stack命令可以用来通过yaml格式文件创建应用,通常编排好一个yaml格式的文件后,可以通过以下命令创建

通过yaml文件创建更新应用

1
2
3
docker stack deploy -c docker-stack.yml nginx 
#如果是私有仓库,需要加上参数--with-registry-auth才会下载镜像
docker stack deploy -c docker-stack.yml --with-registry-auth nginx

查看swarm集群当前跑了多少个stack(个人理解它类似于k8s里的命名空间)his

1
docker stack ls

列出nginx这个stack中的服务

1
docker stack services nginx

查看nginx这个stack中的任务

1
docker stack ps nginx

删除

1
docker stack rm nginx

移除nginx这个

1
docker stack down nginx

docker-stack.yml样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version:'3.4'
services:
#服务名
redis:
image: redis:4.0.14-alpine
command: redis-server --appendonly yes --requirepass "123456"
ports:
- 8080:80
volumes:
- "/data/redis:/data/redis"
environment:
APP: test
deploy:
#用户可以指定副本数量。默认也是这个值,可以省略
mode: replicated
replicas: 2
#更新策略
update_config:
#每组容器更新之间的延迟时间
delay: 10
#重启策略
restart_policy:
#重启条件
condition: on-failure
#根据节点标识绑定节点
placement:
constraints: [node.role == manager]
networks:
- multihost

networks:
multihost:
driver: overlay

volumes: