在公司使用docker,搭建了一個V1版本的倉庫,時間長了以后發現有很多冗余,SO,考慮清理
Docker registry默認提供了一個倉庫清理的url,如下:可以刪除鏡像centos6s的tag(latest)
curl -X DELETE http://localhost:5000/v1/repositories/centos6s/tags/latest
但問題來了!!
實際上,物理上疊加的鏡像層是不會刪除的,就是說通過這個url刪除的只是對應的鏡像信息,而不是實際的鏡像。這樣的鏡像會一直存在,直到我們的磁盤爆了,然后,就沒有然后了。
詳細內容大家可以自行去研究,這里不展開討論了。
基於以上的原因,看了一下V1版本倉庫的實際存儲方式,我做了個清理的小工具,放在github上,地址如下:
https://github.com/King-Kuhn/docker_registry_clean
下面是使用步驟以及目前支持的情況,后面有時間會增加新的功能。
也歡迎同學們拍磚。
# docker_registry_clean
Author : Kuhn
QQ : 170478063
清理docker私有倉庫
目前支持v1版本的docker registry
當前功能:
1.清理指定image:tag
2.當image所有的tag均刪除后,會嘗試刪除該image歷史冗余的所有鏡像
操作方法:
1.下載本工具包docker_registry_clean
2.將docker_registry_clean目錄放在docker私有倉庫所在主機的某個目錄下(需要有操作倉庫目錄的權限)
3.執行如下命令
python delete-image.py {registry_path} {image_name:image_tag}
----------{registry_path}是倉庫所在目錄,其實就是啟動倉庫的時候指定的目錄(-v /home/registry-storage:/home/registry-storage -w /home/registry-storage) 默認V1版本的倉庫根目錄下有這兩個目錄:images repositories
----------{image_name:image_tag} 鏡像:tag
