docker私有仓库删除image

docker仓库存放着公司内部的镜像、时间长了难免存在一些废弃的镜像在里面。如果不删除造成空间的浪费。下面就简单的看看仓库中的镜像是怎么删除的。

第一步:registry启动依赖config.yml配置文件:在默认文件的storage区域中添加delete_enable_ture配置项。也可以在启动时候指定-e添加。允许删除镜像:

配置文件:

技术分享

第二步:下载registry镜像并启动容器。

docker run  -d -v /conf/:/etc/docker/registry -v /opt/registry:/var/lib/registry -p5000:5000 --restart=always --name registry docker.io/registr y:latest

技术分享

第三步:上传镜像

技术分享

前边三个步骤都是为删除镜像做准备。现在正式开始删除操作。

先看下官网怎么说:

技术分享

语法非常简单。官网上注明可以通过name和digest删除image。name我们是知道的。现在去获取digest:

技术分享

删除一个image所需要的name和digest都有了。现在执行删除操作:

[root@docker1 ~]# curl -XDELETE 127.0.0.1:5000/v2/registry_test/manifests/sha256:48b7957fb8794 3139789779c6e1448ce3cbd52adf1eba62f4633c0e289c08c1b

技术分享

看似已经删除了,其实硬盘地址并没有释放。是因为docker删除image只是删除的image的元数据信息。层数据并没有删除。现在进入registry中进行垃圾回收

[root@docker1 ~]# docker exec -it <容器ID|容器名称> /bin/sh
/ # cd /var/lib/registry/
/var/lib/registry # du -sch
10.3M    .
10.3M    total
/var/lib/registry # registry garbage-collect /etc/docker/registry/config.yml
/var/lib/registry # du -sch
28.0K    .
28.0K    total

这样就达到我们的目的了。及删除了仓库容器,又释放了磁盘空间

注意事项:

1、registry配置文件:如果想要进行仓库images的删除操作: 至少要添加REGISTRY_STORAGE_DELETE_ENABLED: true这个环境变量也就是第一步标注的

2、获取digest:自从registry2.3之后,获取digest需要进行安全检查。所以必须加头部信息Accept: application/vnd.docker.distribution.manifest.v2+json。否则获取到的digest将不能使用。


本文出自 “努力奔小康” 博客,请务必保留此出处http://302876016.blog.51cto.com/12889292/1966816

文章来自:http://302876016.blog.51cto.com/12889292/1966816
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3