docker image ls (列出 Docker 鏡像)

說明列出映像檔
用法docker image ls [選項] [儲存庫[:標籤]]
別名
docker image list docker images

說明

預設的 docker images 將顯示所有頂層映像檔、其儲存庫和標籤,以及它們的大小。

Docker 映像檔具有中間層,可提高可重複使用性、減少磁碟使用量,並透過允許快取每個步驟來加速 docker build。預設情況下不會顯示這些中間層。

大小 是映像檔及其所有父映像檔所佔用的累積空間。這也是您在 docker save 映像檔時建立的 Tar 檔案內容所使用的磁碟空間。

如果映像檔具有多個儲存庫名稱或標籤,則會多次列出。此單一映像檔(可透過其匹配的 映像檔 ID 識別)僅使用一次列出的 大小

選項

選項預設值說明
-a, --all顯示所有映像檔(預設隱藏中間映像檔)
--digests顯示摘要
-f, --filter根據提供的條件篩選輸出
--format使用自訂範本格式化輸出
'table': 以表格格式列印輸出,並帶有欄位標題(預設)
'table 範本': 使用指定的 Go 範本以表格格式列印輸出
'json': 以 JSON 格式列印
'範本': 使用指定的 Go 範本列印輸出。
參考 https://docker-docs.dev.org.tw/go/formatting/ 以取得更多關於使用模板格式化輸出的資訊
--no-trunc不要截斷輸出
-q, --quiet僅顯示映像檔 ID
--treeAPI 1.47+ 實驗性 (CLI) 將多平台映像檔列成樹狀結構 (實驗性)

範例

列出最近建立的映像檔

$ docker images

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
<none>                    <none>              77af4d6b9913        19 hours ago        1.089 GB
committ                   latest              b6fa739cedf5        19 hours ago        1.089 GB
<none>                    <none>              78a85c484f71        19 hours ago        1.089 GB
docker                    latest              30557a29d5ab        20 hours ago        1.089 GB
<none>                    <none>              5ed6274db6ce        24 hours ago        1.089 GB
postgres                  9                   746b819f315e        4 days ago          213.4 MB
postgres                  9.3                 746b819f315e        4 days ago          213.4 MB
postgres                  9.3.5               746b819f315e        4 days ago          213.4 MB
postgres                  latest              746b819f315e        4 days ago          213.4 MB

按名稱和標籤列出映像檔

docker images 命令接受一個可選的 [REPOSITORY[:TAG]] 參數,用於將列表限制為與參數匹配的映像檔。如果您指定 REPOSITORY 但沒有 TAG,則 docker images 命令會列出給定儲存庫中的所有映像檔。

例如,要列出 java 儲存庫中的所有映像檔,請執行以下命令

$ docker images java

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                8                   308e519aac60        6 days ago          824.5 MB
java                7                   493d82594c15        3 months ago        656.3 MB
java                latest              2711b1d6f3aa        5 months ago        603.9 MB

[REPOSITORY[:TAG]] 值必須完全匹配。這表示,例如,docker images jav 不會匹配映像檔 java

如果同時提供了 REPOSITORYTAG,則只會列出與該儲存庫和標籤匹配的映像檔。要查找 java 儲存庫中標籤為 8 的所有本地映像檔,您可以使用

$ docker images java:8

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                8                   308e519aac60        6 days ago          824.5 MB

如果沒有任何內容與 REPOSITORY[:TAG] 匹配,則列表為空。

$ docker images java:0

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

列出完整長度的映像檔 ID (--no-trunc)

$ docker images --no-trunc

REPOSITORY                    TAG                 IMAGE ID                                                                  CREATED             SIZE
<none>                        <none>              sha256:77af4d6b9913e693e8d0b4b294fa62ade6054e6b2f1ffb617ac955dd63fb0182   19 hours ago        1.089 GB
committest                    latest              sha256:b6fa739cedf5ea12a620a439402b6004d057da800f91c7524b5086a5e4749c9f   19 hours ago        1.089 GB
<none>                        <none>              sha256:78a85c484f71509adeaace20e72e941f6bdd2b25b4c75da8693efd9f61a37921   19 hours ago        1.089 GB
docker                        latest              sha256:30557a29d5abc51e5f1d5b472e79b7e296f595abcf19fe6b9199dbbc809c6ff4   20 hours ago        1.089 GB
<none>                        <none>              sha256:0124422dd9f9cf7ef15c0617cda3931ee68346455441d66ab8bdc5b05e9fdce5   20 hours ago        1.089 GB
<none>                        <none>              sha256:18ad6fad340262ac2a636efd98a6d1f0ea775ae3d45240d3418466495a19a81b   22 hours ago        1.082 GB
<none>                        <none>              sha256:f9f1e26352f0a3ba6a0ff68167559f64f3e21ff7ada60366e2d44a04befd1d3a   23 hours ago        1.089 GB
tryout                        latest              sha256:2629d1fa0b81b222fca63371ca16cbf6a0772d07759ff80e8d1369b926940074   23 hours ago        131.5 MB
<none>                        <none>              sha256:5ed6274db6ceb2397844896966ea239290555e74ef307030ebb01ff91b1914df   24 hours ago        1.089 GB

列出映像檔摘要 (--digests)

使用 v2 或更高版本格式的映像檔具有稱為 `摘要` 的內容可定址識別碼。只要用於生成映像檔的輸入保持不變,摘要值就是可預測的。要列出映像檔摘要值,請使用 --digests 標誌

$ docker images --digests
REPOSITORY                         TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
localhost:5000/test/busybox        <none>              sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf   4986bf8c1536        9 weeks ago         2.43 MB

當推送或拉取到 2.0 儲存庫時,pushpull 命令輸出包含映像檔摘要。您可以使用摘要值進行 pull。您也可以在 createrunrmi 命令以及 Dockerfile 中的 FROM 映像檔參考中參考摘要。

過濾 (--filter)

過濾標誌 (-f--filter) 的格式為「key=value」。如果有多個過濾器,則傳遞多個標誌(例如,--filter "foo=bar" --filter "bif=baz")。

目前支援的過濾器為

  • dangling(布林值 - true 或 false)
  • label(label=<key>label=<key>=<value>
  • before (<image-name>[:<tag>], <image id><image@digest>) - 過濾在給定 ID 或參考之前建立的映像檔
  • since (<image-name>[:<tag>], <image id><image@digest>) - 過濾在給定 ID 或參考之後建立的映像檔
  • reference(映像檔參考的模式) - 過濾其參考與指定模式匹配的映像檔

顯示未標記的映像檔 (dangling)

$ docker images --filter "dangling=true"

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              8abc22fbb042        4 weeks ago         0 B
<none>              <none>              48e5f45168b9        4 weeks ago         2.489 MB
<none>              <none>              bf747efa0e2f        4 weeks ago         0 B
<none>              <none>              980fe10e5736        12 weeks ago        101.4 MB
<none>              <none>              dea752e4e117        12 weeks ago        101.4 MB
<none>              <none>              511136ea3c5a        8 months ago        0 B

這將顯示未標記的映像檔,它們是映像檔樹的葉子(不是中間層)。這些映像檔會在新構建的映像檔從映像檔 ID 中移除 repo:tag 時出現,使其成為 <none>:<none> 或未標記。如果嘗試在容器正在使用映像檔時將其移除,則會發出警告。通過使用此標誌,可以進行批次清理。

您可以將其與 docker rmi 一起使用

$ docker rmi $(docker images -f "dangling=true" -q)

8abc22fbb042
48e5f45168b9
bf747efa0e2f
980fe10e5736
dea752e4e117
511136ea3c5a

如果存在使用這些未標記映像檔的容器,Docker 會向您發出警告。

顯示具有給定標籤的映像檔

label 過濾器根據是否存在 labellabel 和值來匹配映像檔。

以下過濾器會匹配具有 com.example.version 標籤的映像檔,無論其值為何。

$ docker images --filter "label=com.example.version"

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
match-me-1          latest              eeae25ada2aa        About a minute ago   188.3 MB
match-me-2          latest              dea752e4e117        About a minute ago   188.3 MB

以下過濾器會匹配具有 com.example.version 標籤且值为 1.0 的映像檔。

$ docker images --filter "label=com.example.version=1.0"

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
match-me            latest              511136ea3c5a        About a minute ago   188.3 MB

在此範例中,值為 0.1 時,它會傳回空集合,因為找不到任何匹配項。

$ docker images --filter "label=com.example.version=0.1"
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE

按時間過濾映像檔

before 過濾器僅顯示在具有給定 ID 或參考的映像檔之前建立的映像檔。例如,擁有以下映像檔

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
image1              latest              eeae25ada2aa        4 minutes ago        188.3 MB
image2              latest              dea752e4e117        9 minutes ago        188.3 MB
image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

使用 before 過濾將得到

$ docker images --filter "before=image1"

REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
image2              latest              dea752e4e117        9 minutes ago        188.3 MB
image3              latest              511136ea3c5a        25 minutes ago       188.3 MB

使用 `since` 過濾將得到

$ docker images --filter "since=image3"
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
image1              latest              eeae25ada2aa        4 minutes ago        188.3 MB
image2              latest              dea752e4e117        9 minutes ago        188.3 MB

按參考過濾映像檔

reference 過濾器僅顯示其參考與指定模式匹配的映像檔。

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              e02e811dd08f        5 weeks ago         1.09 MB
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             musl                733eb3059dce        5 weeks ago         1.21 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

使用 `reference` 過濾將得到

$ docker images --filter=reference='busy*:*libc'

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

使用多個 `reference` 過濾將得到,匹配 A 或 B

$ docker images --filter=reference='busy*:uclibc' --filter=reference='busy*:glibc'

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

格式化輸出 (--format)

格式化選項 (--format) 將使用 Go 模板漂亮地列印容器輸出。

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

佔位符說明
.ID映像檔 ID
.Repository映像檔儲存庫
.Tag映像檔標籤
.Digest映像檔摘要
.CreatedSince自建立映像檔以來經過的時間
.CreatedAt映像檔建立時間
.Size映像檔磁碟大小

使用 --format 選項時,image 命令將完全按照模板宣告的方式輸出數據,或者在使用 table 指令時,還將包含欄標題。

以下範例使用沒有標題的模板,並為所有映像檔輸出以冒號 (:) 分隔的 IDRepository 項目

$ docker images --format "{{.ID}}: {{.Repository}}"

77af4d6b9913: <none>
b6fa739cedf5: committ
78a85c484f71: <none>
30557a29d5ab: docker
5ed6274db6ce: <none>
746b819f315e: postgres
746b819f315e: postgres
746b819f315e: postgres
746b819f315e: postgres

要將所有映像檔及其儲存庫和標籤以表格格式列出,您可以使用

$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

IMAGE ID            REPOSITORY                TAG
77af4d6b9913        <none>                    <none>
b6fa739cedf5        committ                   latest
78a85c484f71        <none>                    <none>
30557a29d5ab        docker                    latest
5ed6274db6ce        <none>                    <none>
746b819f315e        postgres                  9
746b819f315e        postgres                  9.3
746b819f315e        postgres                  9.3.5
746b819f315e        postgres                  latest

要以 JSON 格式列出所有映像檔,請使用 json 指令

$ docker images --format json
{"Containers":"N/A","CreatedAt":"2021-03-04 03:24:42 +0100 CET","CreatedSince":"5 days ago","Digest":"\u003cnone\u003e","ID":"4dd97cefde62","Repository":"ubuntu","SharedSize":"N/A","Size":"72.9MB","Tag":"latest","UniqueSize":"N/A","VirtualSize":"72.9MB"}
{"Containers":"N/A","CreatedAt":"2021-02-17 22:19:54 +0100 CET","CreatedSince":"2 weeks ago","Digest":"\u003cnone\u003e","ID":"28f6e2705743","Repository":"alpine","SharedSize":"N/A","Size":"5.61MB","Tag":"latest","UniqueSize":"N/A","VirtualSize":"5.613MB"}