2-4-2-Docker私有仓库Registry删除镜像的方法
1. 介绍
大家已经跟着福哥学习了Docker私有仓库的搭建和基本使用方法了 , 现在有一个问题 : 如果仓库里面的镜像老了 , 想更新一下 , 怎么办呢?
Registry服务器的镜像是不支持更新操作的 , 如果要更新一个镜像只能先删除再重新push , 今天福哥就带着大家学习如何删除Registry服务器里面的镜像 , 一起来吧~~
2. 官方方法
2.1 复制config.yml
从registry容器里面将/etc/docker/registry/config.yml复制出来。
docker cp registry:/etc/docker/registry/config.yml .默认config.yml内容如下 :
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 32.2 开启删除操作
设置config.yml , 在storage节点添加delete配置设置为true。
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 32.3 覆盖config.yml
将修改过的config.yml覆盖容器里面的。
docker cp config.yml registry:/etc/docker/registry/config.yml2.4 重启仓库容器
docker restart registry2.5 查询镜像标签列表
curl 'https://registry.tongfu.net:5000/v2/centos/tags/list'
2.6 查询digest
curl -i -sS -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' 'https://registry.tongfu.net:5000/v2/centos/manifests/latest'
2.7 删除镜像
curl -X DELETE https://registry.tongfu.net:5000/v2/centos/manifests/sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc2.8 垃圾回收
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
2.9 再次查看镜像标签列表
curl 'https://registry.tongfu.net:5000/v2/centos/tags/list'
可以看到tags为null,也就是说已经被删除了~~
2.10 查看镜像
curl 'https://registry.tongfu.net:5000/v2/_catalog'
3. 暴力方法
3.1 删除镜像文件
直接删除仓库容器/var/lib/registry/docker/registry/v2/repositories/下面的镜像目录。
docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/centos或者可以将这个目录通过volume映射到宿主机上面来,这样便于管理。
rm -rf /data/docker.registry/var/lib/registry/docker/registry/v2/repositories/centos3.2 垃圾回收
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml3.3 重启仓库容器
docker restart registry3.4 查看镜像
curl 'https://registry.tongfu.net:5000/v2/_catalog'
4. 总结
Docker私有仓库Registry服务器删除镜像的坑还是真挺多的,最坑爹的莫过于官方的方法不能真正的删除服务器上面的镜像文件,只是把镜像的tags给干掉了而已,真是太恶心了~~
推荐使用暴力方法删除镜像,这样既删除的彻底,又不用开启storage的delete开关,安全可靠~~
参考链接