如何在Docker中列出容器

Docker是一個容器化平台,可讓您快速構建,測試和部署應用程序,作為可在幾乎任何地方運行的可移植自給自足的容器。 它是事實上的容器部署標準,對於DevOps工程師及其持續的集成和交付渠道而言,它是必不可少的工具。

在本文中,我們將解釋如何列出Docker容器。

列出Docker容器#

用於列出容器的Docker命令採用以下形式:

docker container ls [options]

1.13之前的較舊Docker版本使用不同的命令來列出容器:

docker ps [options]

較新的Docker版本仍支持上述命令,其中 ps 命令是…的別名 container ls

要列出正在運行的容器,請執行 docker container ls 沒有任何選項的命令:

docker container ls

輸出將如下所示:

CONTAINER ID    IMAGE        COMMAND                  CREATED        STATUS        PORTS       NAMES
c8bded53da86    postgres     "docker-entrypoint.s…"   2 hours ago    Up 2 hours    5432/tcp    pg
571c3a115fcf    redis        "docker-entrypoint.s…"   4 hours ago    Up 4 hours    6379/tcp    cache
05ef6d8680ba    nginx        "nginx -g 'daemon of…"   2 hours ago    Up 2 hours    80/tcp      web

輸出的每一行包括以下幾列:

  • Container ID –標識每個容器的唯一字母數字字符串。
  • Image –用於創建容器的Docker映像。
  • Command –啟動容器時執行的命令。
  • Created –容器的創建時間。
  • Status –容器的狀態。
  • Ports –容器的已發布端口。
  • Name –容器的名稱。

如果沒有正在運行的容器,則僅顯示標題行。

-a--all 選項告訴 docker container ls 打印所有容器的列表:

docker container ls -a
CONTAINER ID    IMAGE        COMMAND                  CREATED        STATUS                    PORTS       NAMES
b28cbaa91f15    couchbase    "/entrypoint.sh couc…"   5 hours ago    Exited (0) 3 hours ago                db
c8bded53da86    postgres     "docker-entrypoint.s…"   2 hours ago    Up 2 hours                5432/tcp    pg
571c3a115fcf    redis        "docker-entrypoint.s…"   4 hours ago    Up 4 hours                6379/tcp    cache
05ef6d8680ba    nginx        "nginx -g 'daemon of…"   2 hours ago    Up 2 hours                80/tcp      web

默認情況下,長度超過指定限制的列將被截斷。 使用 --no-trunc 禁用截斷的選項:

docker container ls --no-trunc

要僅顯示容器的ID,請通過 -q--quiet 選項:

docker container ls -q
c8bded53da86
571c3a115fcf
05ef6d8680ba

--format 允許您使用Go模板設置輸出格式。 例如,要僅打印容器的名稱和狀態(包括標題),可以運行:

docker container ls --format 'table {{.Names}}t{{.Status}}'
NAMES    STATUS
pg       Up 2 hours
cache    Up 4 hours
web      Up 2 hours

使用 -s--size 查看容器尺寸的選項:

docker container ls -s

每行將包含一個名為 SIZE 顯示容器大小:

CONTAINER ID    IMAGE        COMMAND                  CREATED        STATUS        PORTS       NAMES    SIZE
c8bded53da86    postgres     "docker-entrypoint.s…"   2 hours ago    Up 2 hours    5432/tcp    pg       63B (virtual 394MB)
571c3a115fcf    redis        "docker-entrypoint.s…"   4 hours ago    Up 4 hours    6379/tcp    cache    0B (virtual 98.2MB)
05ef6d8680ba    nginx        "nginx -g 'daemon of…"   2 hours ago    Up 2 hours    80/tcp      web      2B (virtual 126MB)

--last-n 選項告訴命令顯示 n 最後創建的容器,包括所有狀態。 例如,要查看最近創建的兩個容器,可以運行:

docker container ls -n 2
CONTAINER ID    IMAGE        COMMAND                  CREATED        STATUS                    PORTS       NAMES
b28cbaa91f15    couchbase    "/entrypoint.sh couc…"   5 hours ago    Exited (0) 3 hours ago                db
c8bded53da86    postgres     "docker-entrypoint.s…"   2 hours ago    Up 2 hours                5432/tcp    pg

還有一個選項僅列出最新創建的容器 --latest-l 與…相同 -n 1

docker container ls -l

--filter-f 選項可讓您根據某些條件過濾輸出。

例如,僅查看具有狀態的容器 exited,您將運行:

docker container ls -f "status=exited"
CONTAINER ID    IMAGE        COMMAND                  CREATED        STATUS                    PORTS       NAMES
b28cbaa91f15    couchbase    "/entrypoint.sh couc…"   5 hours ago    Exited (0) 3 hours ago                db

有關所有支持的過濾器的列表,請查看Docker文檔

結論#

Docker容器是映像的獨立運行時實例。 要列出Docker容器,請使用 docker container ls 命令或其別名 docker ps

如有任何疑問,請在下面發表評論。

碼頭工人

Sidebar