1、docker service ls 简介
docker service ls
命令是用于列出当前在集群中运行的所有服务。
此命令与Swarm orchestrator一起工作。
注意:
此命令是集群管理命令,必须在集群管理器节点上执行。要了解经理和工人,请参阅文档中的Swarm mode部分。
参考文档:https://docs.docker.com/engine/reference/commandline/service_ls/
2、docker service ls 语法
docker service ls [OPTIONS]
3、docker service ls 命令
在管理节点上执行以下命令:
docker service ls ID NAME MODE REPLICAS IMAGE c8wgl7q4ndfd frontend replicated 5/5 nginx:alpine dmu1ept4cxcf redis replicated 3/3 redis:3.0.6 iwe3278osahj mongo global 7/7 mongo:3.3 hh08h9uu8uwr job replicated-job 1/1 (3/5 completed) nginx:latest
REPLICAS 列显示服务的实际任务数量和期望任务数量。如果服务是 replicated-job
或 global-job
,还会显示作业的完成状态,即已完成的任务数和作业将执行的总任务数。
1)过滤 (--filter)
过滤标记(-f 或 --filter)的格式为“key=value”。如果有多个过滤条件,则需要传递多个标志(例如,--filter "foo=bar" --filter "bif=baz")。
当前支持的过滤器有:
- id
- label
- mode
- name
2)id
id 过滤器根据服务的 ID 进行匹配,可以匹配整个或部分 ID。
例如,以下过滤器匹配具有 ID 为 0bcjw 的服务:
docker service ls -f "id=0bcjw" ID NAME MODE REPLICAS IMAGE 0bcjwfh8ychr redis replicated 1/1 redis:3.0.6
3)label
label 过滤器根据标签的存在与否或标签及其值进行匹配。
以下过滤器匹配具有 project 标签的所有服务,而不考虑其值:
docker service ls --filter label=project ID NAME MODE REPLICAS IMAGE 01sl1rp6nj5u frontend2 replicated 1/1 nginx:alpine 36xvvwwauej0 frontend replicated 5/5 nginx:alpine 74nzcxxjv6fq backend replicated 3/3 redis:3.0.6
以下过滤器仅匹配具有 project 标签且其值为 project-a 的服务:
docker service ls --filter label=project=project-a ID NAME MODE REPLICAS IMAGE 36xvvwwauej0 frontend replicated 5/5 nginx:alpine 74nzcxxjv6fq backend replicated 3/3 redis:3.0.6
4)mode
mode 过滤器根据服务的模式(replicated 或 global)进行匹配。
以下过滤器仅匹配全局服务:
docker service ls --filter mode=global ID NAME MODE REPLICAS IMAGE w7y0v2yrn620 top global 1/1 busybox
5)name
name 过滤器根据服务的名称进行匹配,可以匹配整个或部分名称。
以下过滤器匹配名称中包含 redis 的服务:
docker service ls --filter name=redis ID NAME MODE REPLICAS IMAGE 0bcjwfh8ychr redis replicated 1/1 redis:3.0.6
6)格式化输出 (--format)
使用格式化选项(--format
),可以使用 Go 模板对服务的输出进行美观打印。
以下是 Go 模板中可用的占位符列表:
占位符 | 描述 |
.ID | 服务 ID |
.Name | 服务名称 |
.Mode | 服务模式(replicated、global) |
.Replicas | 服务副本数量 |
.Image | 服务镜像 |
.Ports | 以入口模式发布的服务端口 |
使用 --format
选项时,service ls
命令将根据模板的声明输出数据,或者当使用 table 指令时,还会包括列标题。
以下示例使用没有列标题的模板,输出所有服务的 ID、Mode 和 Replicas 条目,并用冒号 (:) 分隔:
docker service ls --format "{{.ID}}: {{.Mode}} {{.Replicas}}" 0zmvwuiu3vue: replicated 10/10 fm6uf97exkul: global 5/5
要以 JSON 格式列出所有服务,使用 json 指令:
docker service ls --format json {"ID":"ssniordqolsi","Image":"hello-world:latest","Mode":"replicated","Name":"hello","Ports":"","Replicas":"0/1"}
4、命令选项
选项 | 默认值 | 描述 |
--filter, -f | 根据提供的条件筛选输出 | |
--format | 使用自定义模板格式化输出: 'table':以带有列标题的表格格式打印输出(默认) 'table TEMPLATE':使用给定的 Go 模板 以表格格式打印输出'json':以 JSON 格式打印输出 'TEMPLATE':使用给定的 Go 模板打印输出。 有关使用模板格式化输出的更多信息,请参阅 | |
--quiet, -q | 仅显示 ID |
5、子命令
命令 | 描述 |
docker service create | 创建新的服务 |
docker service inspect | 显示一个或多个服务的详细信息 |
docker service logs | 获取一个服务或任务的日志 |
docker service ls | 列出服务 |
docker service ps | 列出一个或多个服务的任务 |
docker service rm | 删除一个或多个服务 |
docker service rollback | 恢复服务配置的更改 |
docker service scale | 缩放一个或多个复制的服务 |
docker service update | 更新一个服务的配置 |