docker service ps
| 描述 | 列出一个或多个服务的任务 |
|---|---|
| 用法 | docker service ps [OPTIONS] SERVICE [SERVICE...] |
Swarm 此命令适用于 Swarm 调度器。
描述
列出作为指定服务一部分运行的任务。
注意
这是一个集群管理命令,必须在 Swarm 管理节点上执行。要了解管理节点和工作节点,请参阅文档中的Swarm 模式部分。
选项
| 选项 | 默认 | 描述 |
|---|---|---|
-f, --filter | 根据提供的条件过滤输出 | |
--format | 使用 Go 模板美化输出任务 | |
--no-resolve | 不要将 ID 映射为名称 | |
--no-trunc | 不要截断输出 | |
-q, --quiet | 仅显示任务 ID |
示例
列出属于服务一部分的任务
以下命令显示了 redis 服务的所有任务:
$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
0qihejybwf1x redis.1 redis:7.4.0 manager1 Running Running 8 seconds
bk658fpbex0d redis.2 redis:7.4.0 worker2 Running Running 9 seconds
5ls5s5fldaqg redis.3 redis:7.4.0 worker1 Running Running 9 seconds
8ryt076polmc redis.4 redis:7.4.0 worker1 Running Running 9 seconds
1x0v8yomsncd redis.5 redis:7.4.0 manager1 Running Running 8 seconds
71v7je3el7rr redis.6 redis:7.4.0 worker2 Running Running 9 seconds
4l3zm9b7tfr7 redis.7 redis:7.4.0 worker2 Running Running 9 seconds
9tfpyixiy2i7 redis.8 redis:7.4.0 worker1 Running Running 9 seconds
3w1wu13yupln redis.9 redis:7.4.0 manager1 Running Running 8 seconds
8eaxrb2fqpbn redis.10 redis:7.4.0 manager1 Running Running 8 seconds
除了运行中的任务外,输出还会显示任务历史。例如,在将服务更新为使用 redis:7.4.1 镜像后,输出可能如下所示:
$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
50qe8lfnxaxk redis.1 redis:7.4.1 manager1 Running Running 6 seconds ago
ky2re9oz86r9 \_ redis.1 redis:7.4.0 manager1 Shutdown Shutdown 8 seconds ago
3s46te2nzl4i redis.2 redis:7.4.1 worker2 Running Running less than a second ago
nvjljf7rmor4 \_ redis.2 redis:7.4.1 worker2 Shutdown Rejected 23 seconds ago "No such image: redis@sha256:6…"
vtiuz2fpc0yb \_ redis.2 redis:7.4.0 worker2 Shutdown Shutdown 1 second ago
jnarweeha8x4 redis.3 redis:7.4.1 worker1 Running Running 3 seconds ago
vs448yca2nz4 \_ redis.3 redis:7.4.0 worker1 Shutdown Shutdown 4 seconds ago
jf1i992619ir redis.4 redis:7.4.1 worker1 Running Running 10 seconds ago
blkttv7zs8ee \_ redis.4 redis:7.4.0 worker1 Shutdown Shutdown 11 seconds ago
任务历史记录中的条目数量由初始化集群时设置的
--task-history-limit 选项决定。您可以使用
docker swarm update 命令更改任务历史保留限制。
部署服务时,docker 会解析服务镜像的摘要,并将该服务固定到该摘要。默认情况下不显示摘要,但如果使用 --no-trunc,则会打印出来。--no-trunc 选项还会显示未截断的任务 ID 和错误消息,如下例所示:
$ docker service ps --no-trunc redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
50qe8lfnxaxksi9w2a704wkp7 redis.1 redis:7.4.1@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 manager1 Running Running 5 minutes ago
ky2re9oz86r9556i2szb8a8af \_ redis.1 redis:7.4.0@sha256:f8829e00d95672c48c60f468329d6693c4bdd28d1f057e755f8ba8b40008682e worker2 Shutdown Shutdown 5 minutes ago
bk658fpbex0d57cqcwoe3jthu redis.2 redis:7.4.1@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 worker2 Running Running 5 seconds
nvjljf7rmor4htv7l8rwcx7i7 \_ redis.2 redis:7.4.1@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 worker2 Shutdown Rejected 5 minutes ago "No such image: redis@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842"
过滤 (--filter)
过滤标志(-f 或 --filter)格式是一个 key=value 对。如果有多个过滤器,则传递多个标志(例如 --filter "foo=bar" --filter "bif=baz")。多个过滤标志组合为一个 OR 过滤器。例如,-f name=redis.1 -f name=redis.7 返回 redis.1 和 redis.7 任务。
目前支持的过滤器有:
id
id 过滤器匹配任务 ID 的全部或前缀。
$ docker service ps -f "id=8" redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
8ryt076polmc redis.4 redis:7.4.1 worker1 Running Running 9 seconds
8eaxrb2fqpbn redis.10 redis:7.4.1 manager1 Running Running 8 seconds
名称
name 过滤器匹配任务名称。
$ docker service ps -f "name=redis.1" redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
qihejybwf1x5 redis.1 redis:7.4.1 manager1 Running Running 8 seconds
节点
node 过滤器基于节点名称或节点 ID 进行匹配。
$ docker service ps -f "node=manager1" redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
0qihejybwf1x redis.1 redis:7.4.1 manager1 Running Running 8 seconds
1x0v8yomsncd redis.5 redis:7.4.1 manager1 Running Running 8 seconds
3w1wu13yupln redis.9 redis:7.4.1 manager1 Running Running 8 seconds
8eaxrb2fqpbn redis.10 redis:7.4.1 manager1 Running Running 8 seconds
desired-state
desired-state 过滤器可以取值 running、shutdown 或 accepted。
格式化输出 (--format)
格式化选项 (--format) 使用 Go 模板对任务输出进行美化打印。
Go 模板的有效占位符列表如下:
| 占位符 | 描述 |
|---|---|
.ID | 任务 ID |
.Name | 任务名称 |
.Image | 任务镜像 |
.Node | 节点 ID |
.DesiredState | 任务的期望状态(running、shutdown 或 accepted) |
.CurrentState | 任务当前状态 |
.Error | 错误 |
.Ports | 任务发布端口 |
当使用 --format 选项时,service ps 命令将完全按照模板声明输出数据,或者在使用 table 指令时,也会包含列标题。
下面的示例使用了一个没有标题的模板,并输出所有任务的 Name 和 Image 条目,以冒号 (:) 分隔:
$ docker service ps --format "{{.Name}}: {{.Image}}" top
top.1: busybox
top.2: busybox
top.3: busybox