docker image ls

描述列出映像檔
使用方式docker image ls [OPTIONS] [REPOSITORY[:TAG]]
別名
docker image list docker images

描述

預設的 docker images 指令會顯示所有最上層的映像檔、其儲存庫 (Repository) 與標籤 (Tags),以及它們的大小。

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

SIZE 是該映像檔及其所有父層映像檔所佔用的累計空間。這也是您執行 docker save 建立 Tar 檔案時,該檔案內容所佔用的磁碟空間。

如果一個映像檔有多個儲存庫名稱或標籤,它會被列出多次。這個單一映像檔(可透過其相同的 IMAGE ID 識別)僅會計算一次 SIZE 欄位中列出的空間。

選項

選項預設值描述
-a, --all顯示所有映像檔(預設隱藏中繼映像檔)
--digests顯示摘要 (digests)
-f, --filter根據提供的條件篩選輸出
--format使用自訂模板格式化輸出
'table':以表格格式列印輸出並帶有欄位標題(預設)
'table TEMPLATE':使用指定的 Go 模板以表格格式列印輸出
'json':以 JSON 格式列印
'TEMPLATE':使用指定的 Go 模板列印輸出。
關於使用模板格式化輸出的更多資訊,請參閱 https://docs.docker.com.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 或更新版本的映像檔格式擁有一個稱為 digest 的內容定址識別碼。只要用於產生映像檔的輸入未變更,該摘要值就是可預測的。若要列出映像檔的摘要值,請使用 --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

當推送到 (push) 或從 (pull) 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

這將顯示映像檔樹狀結構中作為葉節點的未加標籤映像檔(非中繼層)。這些映像檔會在映像檔的新建置過程將 repo:tag 從原始映像檔 ID 移走時出現,使其變為 <none>:<none> 或未加標籤。如果嘗試移除正在被容器使用的映像檔,系統會發出警告。擁有此旗標可以進行批次清理。

您可以結合 docker rmi 使用此功能。

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

8abc22fbb042
48e5f45168b9
bf747efa0e2f
980fe10e5736
dea752e4e117
511136ea3c5a

如果有任何容器正在使用這些未加標籤的映像檔,Docker 會向您發出警告。

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

label 過濾器會根據是否存在 label 本身,或者 label 與值來匹配映像檔。

以下過濾器會匹配具有 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 樣板 (template) 漂亮地列印容器輸出。

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"}
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.