背景
Docker Registry在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据, 这样随着镜像的反复上传,删除,仓库占用的空间会越来越大,只到撑爆整个数据磁盘。Docker Rigistry在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据,本文对这一特性进行了体验,详细记录了删除镜像,回收空间的具体步骤。
部署镜像仓库
启动仓库容器
这里需要说明一点,在启动仓库时,需在配置文件中的storage配置中增加delete=true配置项,允许删除镜像,本次试验采用如下配置文件:
上传镜像
验证
查看数据进行仓库容器中,通过du命令查看大小,可以看到当前仓库数据大小为61M。
删除镜像
API
name: 镜像名称
reference: 镜像对应sha256值, 即使用docker push命令上传镜像成功后终端输出的sha256结果,也可以用docker inspect获取:
示例
发送请求,删除刚才上传的镜像
验证数据大小
可以看到数据大小没有变化(只删除了元数据)
垃圾回收
参考命令
示例
验证查看数据大小
闻道有先后,术业有专攻。小编希望和大家一起交流经验,探讨问题,如果大家觉得本文还不错的话,请大家多多转发,让更多有需要的人看到。