在公司使用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