docker compose ps

描述列出容器
用法docker compose ps [OPTIONS] [SERVICE...]

描述

列出 Compose 專案的容器,包括當前狀態和暴露的埠。

$ docker compose ps
NAME            IMAGE     COMMAND           SERVICE    CREATED         STATUS          PORTS
example-foo-1   alpine    "/entrypoint.…"   foo        4 seconds ago   Up 2 seconds    0.0.0.0:8080->80/tcp

預設情況下,只顯示正在執行的容器。可以使用 --all 標誌來包含已停止的容器。

$ docker compose ps --all
NAME            IMAGE     COMMAND           SERVICE    CREATED         STATUS          PORTS
example-foo-1   alpine    "/entrypoint.…"   foo        4 seconds ago   Up 2 seconds    0.0.0.0:8080->80/tcp
example-bar-1   alpine    "/entrypoint.…"   bar        4 seconds ago   exited (0)

選項

選項預設值描述
-a, --all顯示所有已停止的容器(包括由 run 命令建立的容器)
--filter按屬性過濾服務(支援的過濾器:status)
--formattable使用自定義模板格式化輸出
'table': 以帶列標題的表格格式列印輸出(預設)
'table TEMPLATE': 使用給定的 Go 模板以表格格式列印輸出
'json': 以 JSON 格式列印
'TEMPLATE': 使用給定的 Go 模板列印輸出。
有關使用模板格式化輸出的更多資訊,請參閱https://docs.docker.net.tw/go/formatting/
--no-trunc不截斷輸出
--orphanstrue包含孤立服務(未由專案宣告)
-q, --quiet僅顯示 ID
--services顯示服務
--status按狀態過濾服務。可選值:[paused | restarting | removing | running | dead | created | exited]

示例

格式化輸出 (--format)

預設情況下,docker compose ps 命令使用表格(“pretty”)格式顯示容器。--format 標誌允許您指定輸出的替代表示形式。目前,支援的選項是 pretty(預設)和 json,它以 JSON 陣列的形式輸出容器資訊。

$ docker compose ps --format json
[{"ID":"1553b0236cf4d2715845f053a4ee97042c4f9a2ef655731ee34f1f7940eaa41a","Name":"example-bar-1","Command":"/docker-entrypoint.sh nginx -g 'daemon off;'","Project":"example","Service":"bar","State":"exited","Health":"","ExitCode":0,"Publishers":null},{"ID":"f02a4efaabb67416e1ff127d51c4b5578634a0ad5743bd65225ff7d1909a3fa0","Name":"example-foo-1","Command":"/docker-entrypoint.sh nginx -g 'daemon off;'","Project":"example","Service":"foo","State":"running","Health":"","ExitCode":0,"Publishers":[{"URL":"0.0.0.0","TargetPort":80,"PublishedPort":8080,"Protocol":"tcp"}]}]

JSON 輸出允許您在其他工具中使用這些資訊進行進一步處理,例如,使用 jq 工具來美化 JSON 輸出。

$ docker compose ps --format json | jq .
[
  {
    "ID": "1553b0236cf4d2715845f053a4ee97042c4f9a2ef655731ee34f1f7940eaa41a",
    "Name": "example-bar-1",
    "Command": "/docker-entrypoint.sh nginx -g 'daemon off;'",
    "Project": "example",
    "Service": "bar",
    "State": "exited",
    "Health": "",
    "ExitCode": 0,
    "Publishers": null
  },
  {
    "ID": "f02a4efaabb67416e1ff127d51c4b5578634a0ad5743bd65225ff7d1909a3fa0",
    "Name": "example-foo-1",
    "Command": "/docker-entrypoint.sh nginx -g 'daemon off;'",
    "Project": "example",
    "Service": "foo",
    "State": "running",
    "Health": "",
    "ExitCode": 0,
    "Publishers": [
      {
        "URL": "0.0.0.0",
        "TargetPort": 80,
        "PublishedPort": 8080,
        "Protocol": "tcp"
      }
    ]
  }
]

按狀態過濾容器 (--status)

使用 --status 標誌按狀態過濾容器列表。例如,只顯示正在執行的容器或只顯示已退出的容器。

$ docker compose ps --status=running
NAME            IMAGE     COMMAND           SERVICE    CREATED         STATUS          PORTS
example-foo-1   alpine    "/entrypoint.…"   foo        4 seconds ago   Up 2 seconds    0.0.0.0:8080->80/tcp

$ docker compose ps --status=exited
NAME            IMAGE     COMMAND           SERVICE    CREATED         STATUS          PORTS
example-bar-1   alpine    "/entrypoint.…"   bar        4 seconds ago   exited (0)

按狀態過濾容器 (--filter)

--status 標誌--filter status=<status> 標誌的便捷縮寫。下面的示例與上一節中的示例等效,這次使用了 --filter 標誌。

$ docker compose ps --filter status=running
NAME            IMAGE     COMMAND           SERVICE    CREATED         STATUS          PORTS
example-foo-1   alpine    "/entrypoint.…"   foo        4 seconds ago   Up 2 seconds    0.0.0.0:8080->80/tcp

docker compose ps 命令目前僅支援 --filter status=<status> 選項,但將來可能會新增額外的過濾選項。