如何批量刪除docker中tag爲的鏡像

我們在使用docker的過程中,經常會發現 docker images 列出的鏡像中有很多這樣的鏡像

REPOSITORY                                           TAG                 IMAGE ID            CREATED             SIZE
<none>                                               <none>              d1f6013eddfa        6 days ago          525MB

這些鏡像往往是由於構建過程出現錯誤異常終止而殘留下來的,如何能夠批量刪除這種鏡像呢?
在網上搜一下,發現大多數都是利用grep和awk來做的,這種做法存在一個問題,就是會把docker images輸出的title也作爲參數傳遞給docker rmi命令。其實docker的原生命令中就支持這種過濾,例如我們可以使用如下命令:

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

其中,docker rmi 命令支持傳遞多個image作爲參數批量刪除;而docker images 命令支持使用 ‘dangling=true’ 這個filter來過濾出所有 tag 是 none的鏡像(-f 等同於 --filter,是添加過濾器的意思),docker images 的 -q 選項表示只輸出鏡像ID。

docker images命令目前支持的filter有:

The currently supported filters are:

dangling (boolean - true or false)
label (label=<key> or label=<key>=<value>)
before (<image-name>[:<tag>], <image id> or <image@digest>) - filter images created before given id or references
since (<image-name>[:<tag>], <image id> or <image@digest>) - filter images created since given id or references
reference (pattern of an image reference) - filter images whose reference matches the specified pattern

關於 docker images filter 的用法,可以參考官方文檔:https://docs.docker.com/v17.12/engine/reference/commandline/images/#filtering

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章