docker service ls

說明列出服務
用法docker service ls [選項]
別名
docker service list

Swarm 此指令適用於 Swarm 編排器。

說明

此指令會列出在 swarm 中執行的服務。

注意事項

這是一個叢集管理指令,必須在 swarm 管理節點上執行。若要瞭解管理員和工作節點,請參閱文件中Swarm 模式章節。

選項

選項預設值說明
-f, --filter根據提供的條件篩選輸出
--format使用自訂範本格式化輸出
'table':以表格格式列印輸出,包含欄位標題(預設)
'table TEMPLATE':使用指定的 Go 範本以表格格式列印輸出
'json':以 JSON 格式列印
'TEMPLATE':使用指定的 Go 範本列印輸出。
請參閱 https://docker-docs.dev.org.tw/go/formatting/ 以瞭解更多關於使用範本格式化輸出的資訊
-q, --quiet僅顯示 ID

範例

在管理節點上

$ 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-jobglobal-job 狀態,它還會顯示作業的完成狀態,即已完成的任務數量除以作業將執行的總任務數量。

篩選 (--filter)

篩選旗標 (-f--filter) 的格式為「key=value」。如果有多個篩選器,請傳遞多個旗標(例如,--filter "foo=bar" --filter "bif=baz")。

目前支援的篩選器為

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

label

label 篩選器會根據是否存在 labellabel 和值來比對服務。

以下篩選器會比對所有帶有 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

mode

mode 篩選器會比對服務的模式(replicatedglobal)。

以下篩選器僅比對 global 服務。

$ docker service ls --filter mode=global
ID                  NAME                MODE                REPLICAS            IMAGE
w7y0v2yrn620        top                 global              1/1                 busybox

name

name 篩選器會比對服務名稱的全部或前綴。

以下篩選器會比對名稱以 redis 開頭的服務。

$ docker service ls --filter name=redis
ID            NAME   MODE        REPLICAS  IMAGE
0bcjwfh8ychr  redis  replicated  1/1       redis:3.0.6

格式化輸出 (--format)

格式化選項 (--format) 使用 Go 樣板來美化服務輸出。

Go 樣板的有效佔位符如下所示

佔位符說明
.ID服務 ID
.Name服務名稱
.Mode服務模式 (replicated,global)
.Replicas服務副本數
.Image服務映像檔
.Ports以入口模式發佈的服務埠

使用 --format 選項時,service ls 命令會根據樣板的宣告輸出資料,或者在使用 table 指令時,也會包含欄位標題。

以下範例使用不含標題的樣板,並以冒號 (:) 分隔所有服務的 IDModeReplicas 項目輸出

$ 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"}