1、docker service ps 简介
docker service ps
命令用于列出一个或多个服务的任务(tasks)的详细信息。
注意:
此命令是一个集群管理命令,必须在集群管理器节点上执行。要了解经理和工人,请参阅文档中的Swarm mode部分。
参考文档:https://docs.docker.com/engine/reference/commandline/service_ps/
2、docker service ps 语法
docker service ps [OPTIONS] SERVICE [SERVICE...]
3、docker service ps 命令
1)列出属于服务的任务
以下命令显示属于 redis 服务的所有任务:
docker service ps redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 0qihejybwf1x redis.1 redis:3.0.5 manager1 Running Running 8 seconds bk658fpbex0d redis.2 redis:3.0.5 worker2 Running Running 9 seconds 5ls5s5fldaqg redis.3 redis:3.0.5 worker1 Running Running 9 seconds 8ryt076polmc redis.4 redis:3.0.5 worker1 Running Running 9 seconds 1x0v8yomsncd redis.5 redis:3.0.5 manager1 Running Running 8 seconds 71v7je3el7rr redis.6 redis:3.0.5 worker2 Running Running 9 seconds 4l3zm9b7tfr7 redis.7 redis:3.0.5 worker2 Running Running 9 seconds 9tfpyixiy2i7 redis.8 redis:3.0.5 worker1 Running Running 9 seconds 3w1wu13yupln redis.9 redis:3.0.5 manager1 Running Running 8 seconds 8eaxrb2fqpbn redis.10 redis:3.0.5 manager1 Running Running 8 seconds
除了运行的任务,输出还显示任务历史记录。例如,在将服务更新为使用 redis:3.0.6 镜像之后,输出可能如下所示:
docker service ps redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 50qe8lfnxaxk redis.1 redis:3.0.6 manager1 Running Running 6 seconds ago ky2re9oz86r9 \_ redis.1 redis:3.0.5 manager1 Shutdown Shutdown 8 seconds ago 3s46te2nzl4i redis.2 redis:3.0.6 worker2 Running Running less than a second ago nvjljf7rmor4 \_ redis.2 redis:3.0.6 worker2 Shutdown Rejected 23 seconds ago "No such image: redis@sha256:6…" vtiuz2fpc0yb \_ redis.2 redis:3.0.5 worker2 Shutdown Shutdown 1 second ago jnarweeha8x4 redis.3 redis:3.0.6 worker1 Running Running 3 seconds ago vs448yca2nz4 \_ redis.3 redis:3.0.5 worker1 Shutdown Shutdown 4 seconds ago jf1i992619ir redis.4 redis:3.0.6 worker1 Running Running 10 seconds ago blkttv7zs8ee \_ redis.4 redis:3.0.5 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:3.0.6@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 manager1 Running Running 5 minutes ago ky2re9oz86r9556i2szb8a8af \_ redis.1 redis:3.0.5@sha256:f8829e00d95672c48c60f468329d6693c4bdd28d1f057e755f8ba8b40008682e worker2 Shutdown Shutdown 5 minutes ago bk658fpbex0d57cqcwoe3jthu redis.2 redis:3.0.6@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 worker2 Running Running 5 seconds nvjljf7rmor4htv7l8rwcx7i7 \_ redis.2 redis:3.0.6@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 worker2 Shutdown Rejected 5 minutes ago "No such image: redis@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842"
2)过滤 (--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
- name
- node
- desired-state
3)id
id 过滤器匹配任务的全部或部分 ID。
docker service ps -f "id=8" redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 8ryt076polmc redis.4 redis:3.0.6 worker1 Running Running 9 seconds 8eaxrb2fqpbn redis.10 redis:3.0.6 manager1 Running Running 8 seconds
4)name
name 过滤器匹配任务名称。
docker service ps -f "name=redis.1" redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS qihejybwf1x5 redis.1 redis:3.0.6 manager1 Running Running 8 seconds
5)node
node 过滤器匹配节点名称或节点 ID。
docker service ps -f "node=manager1" redis ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 0qihejybwf1x redis.1 redis:3.0.6 manager1 Running Running 8 seconds 1x0v8yomsncd redis.5 redis:3.0.6 manager1 Running Running 8 seconds 3w1wu13yupln redis.9 redis:3.0.6 manager1 Running Running 8 seconds 8eaxrb2fqpbn redis.10 redis:3.0.6 manager1 Running Running 8 seconds
6)desired-state
desired-state 过滤器可以采用 running、shutdown 或 accepted 的值。
7)格式化输出 (--format)
使用 --format 选项可以使用 Go 模板以漂亮的格式打印任务输出。
下面是 Go 模板的有效占位符:
点位符 | 描述 |
.ID | 任务ID |
.Name | 任务名称 |
.Image | 任务镜像 |
.Node | 节点ID |
.DesiredState | 任务的期望状态(运行中、已关闭或已接受) |
.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
4、命令选项
选项 | 描述 |
--filter , -f | 根据提供的条件对输出进行过滤 |
--format | 使用 Go 模板以漂亮的格式打印任务 |
--no-resolve | 不将 ID 映射为名称 |
--no-trunc | 不截断输出 |
--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 | 更新一个服务的配置 |