1. 程式人生 > >用python指令碼批量刪除Docker映象

用python指令碼批量刪除Docker映象

CI系統在內網中會自動觸發構建,導致docker映象越來越多,經常把硬碟使用到沒有空間。於是想著寫一個指令碼用來刪除多餘的映象。今日有空,就寫了一個指令碼,共享在https://github.com/Macrame/clean-docker-image。預設保留三個版本,三個版本以前的都會刪除掉。

執行指令碼以後,首先分析映象,把最新三個版本保留,以前的都加入到待刪除列表中。然後真正執行刪除操作。其實在這裡可以加入一個詢問使用者是否真正要刪除,輸入y之後才進行刪除(留給有心的小夥伴們自己完成吧).

效果如圖:


上圖是準備分析映象,下圖是真正執行刪除操作。


這裡可以看到,刪除時並不是簡單根據tag來刪除,而是使用digests值來刪除。這是因為如果一個映象被兩個倉庫引用了,並且tag都已經成為<none>時,無法刪除tag為none的映象,使用digests則可以輕鬆解決問題。

而對於<none>:<none>這種映象,此指令碼也無法刪除,使用

docker rmi -f $(docker images -f dangling=true -q) 即可輕鬆刪除。