目錄

docker ps 指令:列出容器(篩選與自訂格式)

docker ps 列出容器。完整的容器操作見 容器生命週期。

語法

docker ps [參數]

docker ps 與 docker container ls 是同一個指令。

參數

參數說明
-a, --all列出所有容器,包括已停止的(預設只列出執行中的)
-q, --quiet只輸出容器 ID
-f, --filter 條件篩選,可以重複使用多個
--format 範本自訂輸出格式,table、json 或 Go 範本
-n, --last 數字最近建立的 n 個容器(包含所有狀態)
-l, --latest最近建立的一個容器
-s, --size顯示容器的大小
--no-trunc不截斷輸出(完整的 ID 與指令)

常用的 --filter 條件:

條件範例
statusstatus=running、status=exited、status=created
namename=web(部分比對)
labellabel=team=backend
ancestorancestor=nginx:1.30-alpine(由某個映像檔建立)
exitedexited=137(依結束代碼)
publishpublish=8080(使用某個連接埠)
network / volumenetwork=appnet、volume=pgdata
healthhealth=unhealthy

範例

環境中有三個容器:執行中的 web(nginx)與 worker1(加了標籤 team=backend),以及已經結束的 stopped1。

執行中與全部

$ docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23         "sleep 600"              2 seconds ago   Up 2 seconds             worker1
1ec4fdc5c592   nginx:1.30-alpine   "/docker-entrypoint.…"   8 seconds ago   Up 2 seconds   80/tcp    web

$ docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS                     PORTS     NAMES
c260b28b0630   alpine:3.23         "sleep 600"              2 seconds ago   Up 2 seconds                         worker1
17b5b9a8c9ce   alpine:3.23         "true"                   3 seconds ago   Exited (0) 2 seconds ago             stopped1
1ec4fdc5c592   nginx:1.30-alpine   "/docker-entrypoint.…"   8 seconds ago   Up 2 seconds               80/tcp    web

$ docker ps -q
c260b28b0630
1ec4fdc5c592

docker ps 沒有列出 stopped1,docker ps -a 才看得到它,狀態是 Exited (0)。-q 只輸出 ID,方便交給其他指令使用。

篩選

$ docker ps -a --filter status=exited
CONTAINER ID   IMAGE         COMMAND   CREATED         STATUS                     PORTS     NAMES
17b5b9a8c9ce   alpine:3.23   "true"    3 seconds ago   Exited (0) 2 seconds ago             stopped1

$ docker ps --filter name=work
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23   "sleep 600"   2 seconds ago   Up 2 seconds             worker1

$ docker ps --filter label=team=backend
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23   "sleep 600"   2 seconds ago   Up 2 seconds             worker1

自訂欄位

$ docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
NAMES     IMAGE               STATUS
worker1   alpine:3.23         Up 2 seconds
web       nginx:1.30-alpine   Up 3 seconds

table 會加上標題列,欄位之間用 \t(Tab)分隔。常用的欄位:.ID、.Names、.Image、.Status、.Ports、.CreatedAt、.Labels、.Size。輸出成 JSON 用 --format json。

大小與最新的容器

$ docker ps -s
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS     NAMES     SIZE
c260b28b0630   alpine:3.23         "sleep 600"              3 seconds ago   Up 2 seconds             worker1   4.1kB (virtual 9.1MB)
1ec4fdc5c592   nginx:1.30-alpine   "/docker-entrypoint.…"   9 seconds ago   Up 3 seconds   80/tcp    web       86kB (virtual 66.8MB)

$ docker ps -n 1
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23   "sleep 600"   3 seconds ago   Up 2 seconds             worker1
  • SIZE 的第一個數字是容器自己寫入的大小(可寫層),virtual 包含映像檔。nginx 容器啟動時寫了一些暫存檔,所以有 86kB。
  • -n 1 只顯示最近建立的一個。

批次處理:刪除所有已停止的容器

$ docker rm $(docker ps -aq --filter status=exited)
17b5b9a8c9ce

$(...) 先執行裡面的指令,把結果(所有已停止容器的 ID)當成 docker rm 的參數。同樣的效果也可以用 docker container prune(見 清理硬碟空間)。

PowerShell 也支援 $(...) 的寫法;Windows CMD 不支援,請改用 docker container prune。

相關章節

動手練習

練習:列出所有由 nginx:1.30-alpine 建立的容器(包括已停止的),只顯示名稱與狀態。

答案
docker ps -a --filter ancestor=nginx:1.30-alpine --format "table {{.Names}}\t{{.Status}}"

常見問題

docker ps 看不到剛剛執行的容器?

docker ps 只列出**執行中**的容器。容器已經結束(例如一次性的指令、或啟動失敗)時要用 docker ps -a。

docker ps 和 docker container ls 一樣嗎?

完全一樣。docker ps、docker container ls、docker container list、docker container ps 都是同一個指令。

STATUS 中的 Exited (0) 和 Exited (1) 有什麼不同?

括號中是結束代碼。0 表示程式正常結束,非 0 表示出錯,137 表示被強制終止(例如記憶體不足)。用 docker logs 查看原因。

更新於 2026年10月14日