文章目錄
docker images 指令筆記
最近內部的 docker registry 在團隊努力地開發下,images 增長的速度相當地快速,不僅讓空間消耗快速,也讓整個 docker registry 顯得雜亂,於是我就在調整 docker registry 的 image 清除作業,在實際開發相關功能前花了不少時間建立本機的環境,避免對團隊的 docker registry 造成影響,過程中反覆要操作 image 相關指令,趁機筆記一下
基本環境說明
- macOS Mojave 10.14.6
- docker for mac 2.1.0.1 (37199)
關於 docker images 指令
指令用法
docker images [OPTIONS] [REPOSITORY[:TAG]]
指令可用選項
Name, shorthand Description –all , -a 顯示所有 images (不加這個選項,預設不會顯示中繼 images : repository 跟 tag 都為 <none>
)–digests 顯示 image 的 digests –filter , -f 依條件過濾 image –format 使用 Go template 來格式化 image 的顯示資訊 –no-trunc 顯示完整 image 資訊 –quiet , -q 只顯示 images id
--all , -a
會顯示 repository 與 tag 為
<none>
的 image--digests
增加顯示
digest
,digest
是從 Docker 1.6.0 與 registry 2 開始加入用來識別 image 內容的 sha 值--filter , -f
可用的 filter
dangling (boolean - true or false)
用來過濾 images 是否有 tag (個人實測 - 只針對 tag : 只有 tag 為 none 會被列出,repository 為 none 的不會列出來)
docker images -f dangling=true
可使用下列語法直接刪除未被 tag 的 images
docker rmi $(docker images -f "dangling=true" -q)
label
label=<key>
具有指定 label 的 image
docker images -f "label=org.label-schema.name"
label=<key>=<value>
具有指定 label 且 value 為指定內容的 image
docker images -f "label=org.label-schema.name=kafka"
before
僅列出在指定的
<image-name>[:<tag>]
,<image id>
or<image@digest>
之前建立的 image$ 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
$ 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
僅列出在指定的
<image-name>[:<tag>]
,<image id>
or<image@digest>
之後建立的 image$ 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
$ 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
依指定的 pattern 來過濾 image reference (這個選項依個人理解是對於
image:tag
的過濾)$ 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
$ 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
$ 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
透過 Go template 來格式化 docker images 的輸出內容
可用變數 說明 .ID Image ID .Repository Image repository .Tag Image tag .Digest Image digest .CreatedSince image 建立以來經過的時間 .CreatedAt image 建立時間 .Size image 大小 docker images --format "{{.Repository}}:{{.Tag}}"| grep localhost:8082
--no-trunc
顯示完整 image 資訊
未加
--no-trunc
加
--no-trunc
--quiet , -q
僅顯示 image id
心得
之前一直覺得 docker images 指令很單純,大概就是列出個 repository、tag、id,大部份情境下已經相當夠用,真正要用時才發現自己是井底之蛙,為了取得 repository:tag ,還一度想要用 xargs 指令手動處理,查完資料才發現原來 docker images 原生就提供便捷的做法,也才發現自己學藝不精,立馬動手紀錄加深印象
參考資訊
文章作者 Yowko Tsai
上次更新 2021-11-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。