docker container ls

描述列出容器
使用方式docker container ls [選項]
別名
docker container list docker container ps docker ps

描述

列出容器

選項

選項預設值描述
-a, --all顯示所有容器(預設僅顯示執行中的容器)
-f, --filter根據提供的條件篩選輸出
--format使用自訂模板格式化輸出
'table':以表格格式列印輸出並帶有欄位標題(預設)
'table TEMPLATE':使用指定的 Go 模板以表格格式列印輸出
'json':以 JSON 格式列印
'TEMPLATE':使用指定的 Go 模板列印輸出。
關於使用模板格式化輸出的更多資訊,請參閱 https://docs.docker.com.tw/go/formatting/
-n, --last-1顯示最近建立的 n 個容器(包含所有狀態)
-l, --latest顯示最近建立的容器(包含所有狀態)
--no-trunc不要截斷輸出
-q, --quiet僅顯示容器 ID
-s, --size顯示總檔案大小

範例

不截斷輸出(--no-trunc)

執行 docker ps --no-trunc 顯示 2 個連結的容器。

$ docker ps --no-trunc

CONTAINER ID                                                     IMAGE                        COMMAND                CREATED              STATUS              PORTS               NAMES
ca5534a51dd04bbcebe9b23ba05f389466cf0c190f1f8f182d7eea92a9671d00 ubuntu:24.04                 bash                   17 seconds ago       Up 16 seconds       3300-3310/tcp       webapp
9ca9747b233100676a48cc7806131586213fa5dab86dd1972d6a8732e3a84a4d crosbymichael/redis:latest   /redis-server --dir    33 minutes ago       Up 33 minutes       6379/tcp            redis,webapp/db

顯示執行中及已停止的容器(-a, --all)

docker ps 指令預設僅顯示執行中的容器。若要查看所有容器,請使用 --all(或 -a)旗標

$ docker ps -a

docker ps 會在可能的情況下將公開的連接埠分組為一個範圍。例如,公開 TCP 連接埠 100, 101, 102 的容器會在 PORTS 欄位顯示 100-102/tcp

顯示容器的磁碟使用量(--size)

docker ps --size(或 -s)指令會顯示每個容器在磁碟上的兩種不同大小

$ docker ps --size

CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS       PORTS   NAMES        SIZE
e90b8831a4b8   nginx          "/bin/bash -c 'mkdir "   11 weeks ago   Up 4 hours           my_nginx     35.58 kB (virtual 109.2 MB)
00c6131c5e30   telegraf:1.5   "/entrypoint.sh"         11 weeks ago   Up 11 weeks          my_telegraf  0 B (virtual 209.5 MB)
  • 「大小 (size)」資訊顯示了每個容器可寫層 (writable layer) 在磁碟上所使用的資料量
  • 「虛擬大小 (virtual size)」是容器使用的唯讀映像檔 (image) 資料與可寫層所使用的總磁碟空間量。

更多資訊,請參閱 磁碟上的容器大小 章節。

篩選(--filter)

--filter(或 -f)旗標的格式為 鍵=值 對。如果有多個篩選條件,請傳入多個旗標(例如 --filter "foo=bar" --filter "bif=baz")。

目前支援的篩選器有

篩選器描述
id容器的 ID
name容器的名稱
label代表鍵或鍵值對的任意字串。表示為 <key><key>=<value>
exited代表容器退出代碼的整數。僅在搭配 --all 時有用。
statuscreated, restarting, running, removing, paused, exited, 或 dead 其中之一
ancestor篩選與給定映像檔具有共同祖先的容器。表示為 <image-name>[:<tag>], <image id>, 或 <image@digest>
beforesince篩選在給定容器 ID 或名稱之前或之後建立的容器
volume篩選掛載了特定儲存卷 (volume) 或綁定掛載 (bind mount) 的執行中容器。
network(網路)篩選已連線至特定網路的執行中容器。
publishexpose篩選發佈或公開特定連接埠的容器。表示為 <port>[/<proto>]<startport-endport>/[<proto>]
health根據健康檢查狀態篩選容器。為 starting, healthy, unhealthynone 其中之一。
isolation僅限 Windows 守護程式。為 default, process, 或 hyperv 其中之一。
is-task篩選屬於服務「任務」的容器。布林選項(truefalse

label

label 篩選器會根據是否存在標籤 (label) 本身,或是標籤與值來比對容器。

以下篩選器會比對擁有 color 標籤的容器,無論其值為何。

$ docker ps --filter "label=color"

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
673394ef1d4c        busybox             "top"               47 seconds ago      Up 45 seconds                           nostalgic_shockley
d85756f57265        busybox             "top"               52 seconds ago      Up 51 seconds                           high_albattani

以下篩選器會比對擁有 color 標籤且值為 blue 的容器。

$ docker ps --filter "label=color=blue"

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
d85756f57265        busybox             "top"               About a minute ago   Up About a minute                       high_albattani

name

name 篩選器會比對容器名稱的全部或部分。

以下篩選器會比對所有名稱包含 nostalgic_stallman 字串的容器。

$ docker ps --filter "name=nostalgic_stallman"

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9b6247364a03        busybox             "top"               2 minutes ago       Up 2 minutes                            nostalgic_stallman

您也可以像這樣篩選名稱中的子字串

$ docker ps --filter "name=nostalgic"

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
715ebfcee040        busybox             "top"               3 seconds ago       Up 1 second                             i_am_nostalgic
9b6247364a03        busybox             "top"               7 minutes ago       Up 7 minutes                            nostalgic_stallman
673394ef1d4c        busybox             "top"               38 minutes ago      Up 38 minutes                           nostalgic_shockley

exited

exited 篩選器根據退出狀態碼比對容器。例如,篩選成功退出的容器:

$ docker ps -a --filter 'exited=0'

CONTAINER ID        IMAGE             COMMAND                CREATED             STATUS                   PORTS                      NAMES
ea09c3c82f6e        registry:latest   /srv/run.sh            2 weeks ago         Exited (0) 2 weeks ago   127.0.0.1:5000->5000/tcp   desperate_leakey
106ea823fe4e        fedora:latest     /bin/sh -c 'bash -l'   2 weeks ago         Exited (0) 2 weeks ago                              determined_albattani
48ee228c9464        fedora:20         bash                   2 weeks ago         Exited (0) 2 weeks ago                              tender_torvalds

按退出訊號篩選

您可以使用篩選器尋找退出狀態為 137(意指被 SIGKILL(9) 終止)的容器。

$ docker ps -a --filter 'exited=137'

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                       PORTS               NAMES
b3e1c0ed5bfe        ubuntu:latest       "sleep 1000"           12 seconds ago      Exited (137) 5 seconds ago                       grave_kowalevski
a2eb5558d669        redis:latest        "/entrypoint.sh redi   2 hours ago         Exited (137) 2 hours ago                         sharp_lalande

以下任何事件都會導致 137 狀態

  • 手動終止容器的 init 進程
  • 使用 docker kill 終止容器
  • Docker 守護程式重啟,導致所有執行中的容器被終止

status

status 篩選器根據狀態比對容器。容器狀態的可能值為:

狀態描述
created尚未啟動過的容器。
running執行中的容器,由 docker startdocker run 啟動。
paused暫停的容器。請參閱 docker pause
restarting由於容器的指定重啟策略而正在啟動中的容器。
exited不再執行的容器。例如,容器內的程序已完成,或是使用 docker stop 指令停止了容器。
removing正在移除過程中的容器。請參閱 docker rm
dead「已失效」的容器;例如,因為資源被外部程序佔用而僅被部分移除的容器。dead 容器無法(重)啟動,只能移除。

例如,篩選 running(執行中)的容器

$ docker ps --filter status=running

CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
715ebfcee040        busybox                "top"               16 minutes ago      Up 16 minutes                           i_am_nostalgic
d5c976d3c462        busybox                "top"               23 minutes ago      Up 23 minutes                           top
9b6247364a03        busybox                "top"               24 minutes ago      Up 24 minutes                           nostalgic_stallman

篩選 paused(暫停)的容器

$ docker ps --filter status=paused

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
673394ef1d4c        busybox             "top"               About an hour ago   Up About an hour (Paused)                       nostalgic_shockley

ancestor

ancestor 篩選器根據映像檔或其後代來比對容器。此篩選器支援以下映像檔表示法

  • image
  • image:tag
  • image:tag@digest
  • short-id
  • full-id

如果您未指定 tag,則會使用 latest 標籤。例如,篩選使用最新版 ubuntu 映像檔的容器:

$ docker ps --filter ancestor=ubuntu

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
919e1179bdb8        ubuntu-c1           "top"               About a minute ago   Up About a minute                       admiring_lovelace
5d1e4a540723        ubuntu-c2           "top"               About a minute ago   Up About a minute                       admiring_sammet
82a598284012        ubuntu              "top"               3 minutes ago        Up 3 minutes                            sleepy_bose
bab2a34ba363        ubuntu              "top"               3 minutes ago        Up 3 minutes                            focused_yonath

比對基於 ubuntu-c1 映像檔的容器,在本例中它是 ubuntu 的子映像檔

$ docker ps --filter ancestor=ubuntu-c1

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
919e1179bdb8        ubuntu-c1           "top"               About a minute ago   Up About a minute                       admiring_lovelace

比對基於 ubuntu 版本 24.04 的映像檔

$ docker ps --filter ancestor=ubuntu:24.04

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
82a598284012        ubuntu:24.04        "top"               3 minutes ago        Up 3 minutes                            sleepy_bose

以下會比對基於 d0e008c6cf02 層或在其層堆疊中擁有此層的映像檔的容器。

$ docker ps --filter ancestor=d0e008c6cf02

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
82a598284012        ubuntu:24.04        "top"               3 minutes ago        Up 3 minutes                            sleepy_bose

建立時間

before

before 篩選器僅顯示在指定 ID 或名稱的容器之前建立的容器。例如,建立這些容器後:

$ docker ps

CONTAINER ID        IMAGE       COMMAND       CREATED              STATUS              PORTS              NAMES
9c3527ed70ce        busybox     "top"         14 seconds ago       Up 15 seconds                          desperate_dubinsky
4aace5031105        busybox     "top"         48 seconds ago       Up 49 seconds                          focused_hamilton
6e63f6ff38b0        busybox     "top"         About a minute ago   Up About a minute                      distracted_fermat

使用 before 篩選將得到:

$ docker ps -f before=9c3527ed70ce

CONTAINER ID        IMAGE       COMMAND       CREATED              STATUS              PORTS              NAMES
4aace5031105        busybox     "top"         About a minute ago   Up About a minute                      focused_hamilton
6e63f6ff38b0        busybox     "top"         About a minute ago   Up About a minute                      distracted_fermat
since

since 篩選器僅顯示在指定 ID 或名稱的容器之後建立的容器。例如,使用與 before 篩選器相同的容器:

$ docker ps -f since=6e63f6ff38b0

CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
9c3527ed70ce        busybox     "top"         10 minutes ago      Up 10 minutes                           desperate_dubinsky
4aace5031105        busybox     "top"         10 minutes ago      Up 10 minutes                           focused_hamilton

volume

volume 篩選器僅顯示掛載了特定儲存卷,或在特定路徑掛載了儲存卷的容器

$ docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}"

CONTAINER ID        MOUNTS
9c3527ed70ce        remote-volume

$ docker ps --filter volume=/data --format "table {{.ID}}\t{{.Mounts}}"

CONTAINER ID        MOUNTS
9c3527ed70ce        remote-volume

network(網路)

network 篩選器僅顯示連線至特定名稱或 ID 網路的容器。

以下篩選器會比對所有連線至名稱包含 net1 網路的容器。

$ docker run -d --net=net1 --name=test1 ubuntu top
$ docker run -d --net=net2 --name=test2 ubuntu top

$ docker ps --filter network=net1

CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
9d4893ed80fe        ubuntu      "top"         10 minutes ago      Up 10 minutes                           test1

網路篩選器會同時比對網路名稱與 ID。以下範例顯示了所有已附加至 net1 網路的容器,並使用網路 ID 作為篩選條件

$ docker network inspect --format "{{.ID}}" net1

8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5

$ docker ps --filter network=8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5

CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
9d4893ed80fe        ubuntu      "top"         10 minutes ago      Up 10 minutes                           test1

publish 與 expose

publishexpose 篩選器僅顯示具有特定連接埠號、範圍及/或協定的發佈或公開連接埠的容器。未指定時,預設協定為 tcp

以下篩選器會比對所有發佈連接埠 80 的容器

$ docker run -d --publish=80 busybox top
$ docker run -d --expose=8080 busybox top

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
9833437217a5        busybox             "top"               5 seconds ago       Up 4 seconds        8080/tcp                dreamy_mccarthy
fc7e477723b7        busybox             "top"               50 seconds ago      Up 50 seconds       0.0.0.0:32768->80/tcp   admiring_roentgen

$ docker ps --filter publish=80

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                   NAMES
fc7e477723b7        busybox             "top"               About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp   admiring_roentgen

以下篩選器會比對所有公開 TCP 連接埠範圍為 8000-8080 的容器

$ docker ps --filter expose=8000-8080/tcp

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9833437217a5        busybox             "top"               21 seconds ago      Up 19 seconds       8080/tcp            dreamy_mccarthy

以下篩選器會比對所有公開 UDP 連接埠 80 的容器

$ docker ps --filter publish=80/udp

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

格式化輸出(--format)

格式化選項(--format)使用 Go 模板美化容器輸出。

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

佔位符描述
.ID容器 ID
.Image映像檔 ID
.Command引號內的指令
.CreatedAt容器建立的時間。
.RunningFor容器啟動後經過的時間。
.Ports公開的連接埠。
.State容器狀態(例如:「created」, 「running」, 「exited」)。
.Status包含期間與健康狀態細節的容器狀態。
.Size容器磁碟大小。
.Names容器名稱。
.Labels分配給容器的所有標籤。
.Label此容器特定標籤的值。例如 '{{.Label "com.docker.swarm.cpu"}}'
.Mounts此容器中掛載的儲存卷名稱。
.Networks此容器附加的網路名稱。

使用 --format 選項時,ps 指令會依據模板宣告直接輸出資料;若使用 table 指令,則會同時包含欄位標題。

以下範例使用不帶標題的模板,為所有執行中的容器輸出以冒號 (:) 分隔的 IDCommand 項目

$ docker ps --format "{{.ID}}: {{.Command}}"

a87ecb4f327c: /bin/sh -c #(nop) MA
01946d9d34d8: /bin/sh -c #(nop) MA
c1d3b0166030: /bin/sh -c yum -y up
41d50ecd2f57: /bin/sh -c #(nop) MA

若要以表格格式列出所有執行中容器及其標籤,您可以使用:

$ docker ps --format "table {{.ID}}\t{{.Labels}}"

CONTAINER ID        LABELS
a87ecb4f327c        com.docker.swarm.node=ubuntu,com.docker.swarm.storage=ssd
01946d9d34d8
c1d3b0166030        com.docker.swarm.node=debian,com.docker.swarm.cpu=6
41d50ecd2f57        com.docker.swarm.node=fedora,com.docker.swarm.cpu=3,com.docker.swarm.storage=ssd

若要以 JSON 格式列出所有執行中容器,請使用 json 指令

$ docker ps --format json
{"Command":"\"/docker-entrypoint.…\"","CreatedAt":"2021-03-10 00:15:05 +0100 CET","ID":"a762a2b37a1d","Image":"nginx","Labels":"maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e","LocalVolumes":"0","Mounts":"","Names":"boring_keldysh","Networks":"bridge","Ports":"80/tcp","RunningFor":"4 seconds ago","Size":"0B","State":"running","Status":"Up 3 seconds"}
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.