1、docker stack services 简介
docker stack services
命令是用于列出一个堆栈中的所有服务。这是一个在 Docker Swarm mode 中使用的命令,它可以帮助快速地查看堆栈中的所有服务的状态。
注意:
此命令是一个集群管理命令,必须在 Swarm 管理节点上执行。有关管理节点和工作节点的详细信息,请参阅文档中的 Swarm 模式部分。
参考文档:https://docs.docker.com/engine/reference/commandline/stack_services/
2、docker stack services 语法
docker stack services [OPTIONS] STACK
3、docker stack services 命令
1)显示myapp栈中的所有服务
docker stack services myapp ID NAME REPLICAS IMAGE COMMAND 7be5ei6sqeye myapp_web 1/1 nginx@sha256:23f809e7fd5952e7d5be065b4d3643fbbceccd349d537b62a123ef2201bc886f dn7m7nhhfb9y myapp_db 1/1 mysql@sha256:a9a5b559f8821fe73d58c3606c812d1c044868d42c63817fa5125fd9d8b7b539
2)过滤 (--filter)
过滤标志(-f
或 --filter
)的格式是键值对,格式为 key=value。如果有多个过滤器,那么可以传递多个标志(例如 --filter "foo=bar" --filter "bif=baz")。多个过滤标志被组合为 OR 过滤器。
以下命令展示了 web 和 db 两个服务:
docker stack services --filter name=myapp_web --filter name=myapp_db myapp ID NAME REPLICAS IMAGE COMMAND 7be5ei6sqeye myapp_web 1/1 nginx@sha256:23f809e7fd5952e7d5be065b4d3643fbbceccd349d537b62a123ef2201bc886f dn7m7nhhfb9y myapp_db 1/1 mysql@sha256:a9a5b559f8821fe73d58c3606c812d1c044868d42c63817fa5125fd9d8b7b539
当前支持的过滤器有:
- id / ID (--filter id=7be5ei6sqeye, 或 --filter ID=7be5ei6sqeye)
- label (--filter label=key=value)
- mode (--filter mode=replicated, 或 --filter mode=global)
Swarm: 不支持
- name (--filter name=myapp_web)
- node (--filter node=mynode)
Swarm: 不支持
- service (--filter service=web)
Swarm: 不支持
3)格式化输出 (--format)
格式化选项 (--format
) 使用 Go 模板来漂亮地打印服务输出。
Go 模板的有效占位符如下:
占位符 | 描述 |
.ID | 服务ID |
.Name | 服务名称 |
.Mode | 服务模式(复制,全局) |
.Replicas | 服务副本 |
.Image | 服务镜像 |
当使用 --format
选项时,stack services 命令将会根据模板声明的方式准确地输出数据,或者当使用 table 指令时,还会包括列标题。
以下示例使用了一个无标题的模板,并为所有服务输出由冒号(:)分隔的 ID,模式和副本条目:
docker stack services --format "{{.ID}}: {{.Mode}} {{.Replicas}}" 0zmvwuiu3vue: replicated 10/10 fm6uf97exkul: global 5/5 codedocker stack services --format "{{.ID}}: {{.Mode}} {{.Replicas}}"
若要以 JSON 格式列出所有服务,可以使用 json 指令:
docker stack services ls --format json {"ID":"0axqbl293vwm","Image":"localstack/localstack:latest","Mode":"replicated","Name":"myapp_localstack","Ports":"*:4566-\u003e4566/tcp, *:8080-\u003e8080/tcp","Replicas":"0/1"} {"ID":"384xvtzigz3p","Image":"redis:6.0.9-alpine3.12","Mode":"replicated","Name":"myapp_redis","Ports":"*:6379-\u003e6379/tcp","Replicas":"1/1"} {"ID":"hyujct8cnjkk","Image":"postgres:13.2-alpine","Mode":"replicated","Name":"myapp_repos-db","Ports":"*:5432-\u003e5432/tcp","Replicas":"0/1"}
4、命令选项
名称与简写 | 默认值 | 描述 |
--filter , -f | 无 | 根据提供的条件过滤输出 |
--format | 无 | 使用自定义模板格式化输出: ‘table’:以带有列标题的表格格式打印输出(默认); ‘table TEMPLATE’:使用给定的Go模板以表格格式打印输出; ‘json’:以JSON格式打印; ‘TEMPLATE’:使用给定的Go模板打印输出。更多关于使用模板格式化输出的信息,可参阅 |
--quiet , -q | 无 | 只显示ID |
5、子命令
命令 | 描述 |
docker stack config | 输出最终的配置文件,进行合并和插值后 |
docker stack deploy | 部署一个新的 stack 或更新现有的 stack |
docker stack ls | 列出 stacks |
docker stack ps | 列出 stack 中的任务 |
docker stack rm | 移除一个或多个 stacks |
docker stack services | 列出 stack 中的服务 |