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 | |
--tree | API 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
。
如果同時提供了 REPOSITORY
和 TAG
,則只會列出與該儲存庫和標籤匹配的映像檔。要查找 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 儲存庫時,push
或 pull
命令輸出包含映像檔摘要。您可以使用摘要值進行 pull
。您也可以在 create
、run
和 rmi
命令以及 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
過濾器根據是否存在 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 模板漂亮地列印容器輸出。
Go 模板的有效佔位符如下所示
佔位符 | 說明 |
---|---|
.ID | 映像檔 ID |
.Repository | 映像檔儲存庫 |
.Tag | 映像檔標籤 |
.Digest | 映像檔摘要 |
.CreatedSince | 自建立映像檔以來經過的時間 |
.CreatedAt | 映像檔建立時間 |
.Size | 映像檔磁碟大小 |
使用 --format
選項時,image
命令將完全按照模板宣告的方式輸出數據,或者在使用 table
指令時,還將包含欄標題。
以下範例使用沒有標題的模板,並為所有映像檔輸出以冒號 (:
) 分隔的 ID
和 Repository
項目
$ 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"}