docker 服務 ps

說明列出一或多個服務的任務
用法docker service ps [選項] 服務 [服務...]

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: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

工作歷程記錄中的項目數量取決於初始化 swarm 時設定的 --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"

篩選 (--filter)

篩選旗標 (-f--filter) 的格式為 key=value 鍵值對。如果有多個篩選器,則傳遞多個旗標(例如 --filter "foo=bar" --filter "bif=baz")。多個篩選旗標會組合成一個 OR 篩選器。例如,-f name=redis.1 -f name=redis.7 會返回 redis.1redis.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:3.0.6  worker1   Running        Running 9 seconds
8eaxrb2fqpbn   redis.10  redis:3.0.6  manager1  Running        Running 8 seconds

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

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

desired-state

desired-state 篩選器可以接受 runningshutdownaccepted 值。

格式化輸出 (--format)

格式化選項 (--format) 使用 Go 範本漂亮地印出工作輸出。

Go 範本的有效佔位符如下所示

佔位符說明
.ID工作 ID
.Name工作名稱
.Image工作映像
.Node節點 ID
.DesiredState工作的期望狀態 (runningshutdownaccepted)
.CurrentState工作的目前狀態
.Error錯誤
.Ports工作發佈的埠

使用 --format 選項時,service ps 命令將會完全按照範本宣告的內容輸出數據,或者在使用 table 指令時,也會包含欄位標題。

以下範例使用不含標題的範本,並以冒號 (:) 分隔所有工作的 NameImage 項目輸出

$ docker service ps --format "{{.Name}}: {{.Image}}" top

top.1: busybox
top.2: busybox
top.3: busybox