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 | |
--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 或更新版本的映像檔格式擁有一個稱為 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 版本登錄檔時,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
這將顯示映像檔樹狀結構中作為葉節點的未加標籤映像檔(非中繼層)。這些映像檔會在映像檔的新建置過程將 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 指令時,同時包含欄位標題。
以下範例使用不帶標題的樣板,並為所有映像檔輸出以冒號 (:) 分隔的 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"}