发布网友 发布时间:2022-03-21 01:27
共1个回答
热心网友 时间:2022-03-21 02:56
第一步: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 # -sch
10.3M .
10.3M total
/var/lib/registry # registry garbage-collect /etc/docker/registry/config.yml
/var/lib/registry # -sch
28.0K .
28.0K total
这样就达到我们的目的了。及删除了仓库容器,又释放了磁盘空间