[英]How can I delete a docker images by their tag <none> and repository name?
我想問一下是否可以刪除其標簽或創建的標簽的 docker 圖像,我有這樣的事情:
Repository TAG IMAGE_ID CREATED SIZE
registry.someRegistry. latest fa8767676 5 hours ago 119MB
registry.someRegistry. <none> 878787874 29 hours ago 119MB
registry.someRegistry. <none> jkj7jjjk4 2 days ago 119MB
registry.someRegistry. <none> d99090iii 3 days ago 119MB
我需要刪除所有圖像但不是最近的圖像,在這種情況下是標記為最新的圖像或具有最近創建日期的圖像。 我可以使用下一個命令刪除所有圖像,直到創建 5 小時,但這不合適,因為我可以刪除更多圖像而不僅僅是最后一個圖像,最好按 tag=latest 刪除圖像。
docker image prune -a --force --filter "until=5h"
我認為我還需要一個額外的注冊表過濾器,以便只刪除我需要的注冊表的圖像。
有什么好的方法可以實現嗎?
最簡單的是rmi
命令,即:
docker rmi 878787874
這是一個“刪除圖像”命令,使用您列出的 IMAGE_ID。
您可以使用過濾器刪除懸空圖像
docker images --filter dangling=true
沒有一個回復有幫助,而且似乎也沒有另一個線程。 為時已晚,但我遇到了同樣的問題並找到了這個解決方案:
docker rmi $(docker images | grep "<none>" | grep "registry.someRegistry." | awk {'print $3'})
這不是 100% 的證明,因為grep
在名稱和標簽中查找字符串,因此理論上如果您的注冊表名稱出現在某個標簽中,反之亦然,您可能會不小心將其刪除。
可以從一個特定的存儲庫中找到所有懸掛圖像
docker images repository --filter dangling=true
如果你想根據注冊表過濾多個存儲庫,也可以這樣做
docker images --filter=reference='registry/someRegistry/*:*' --filter dangling=true
一旦你有了你想要刪除的列表,你可以這樣做:
docker rmi $(docker images --filter=reference='registry/someRegistry/*:*' --filter dangling=true -q)
編輯以添加通配符*
不適用於/
,因此如果注冊表具有更復雜的文件夾結構,則應將表達式修改為類似
'registry/someRegistry/*/*:*'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.