1. 介绍1.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.1log: fields: service: registrystorage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registryhttp: addr: :5000 headers: X-Content-Type-Options: [nosniff]health: storagedriver: enabled: true interval: 10s threshold: 3
2.2 开启删除操作
设置config.yml,在storage节点添加delete配置设置为true 。
version: 0.1log: fields: service: registrystorage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry delete: enabled: truehttp: addr: :5000 headers: X-Content-Type-Options: [nosniff]health: storagedriver: enabled: true interval: 10s threshold: 3
2.3 覆盖config.yml
将修改过的config.yml覆盖容器里面的 。
docker cp config.yml registry:/etc/docker/registry/config.yml
2.4 重启仓库容器
docker restart registry
2.5 查询镜像标签列表
curl 'https://registry.tongfu.net:5000/v2/centos/tags/list'
![Docker私有仓库Registry删除镜像的方法](http://img.jiangsulong.com/220506/1541134Y8-0.jpg)
文章插图
2.6 查询digest
curl -i -sS -H 'Accept: Application/vnd.docker.distribution.manifest.v2+json' 'https://registry.tongfu.net:5000/v2/centos/manifests/latest'
![Docker私有仓库Registry删除镜像的方法](http://img.jiangsulong.com/220506/15411363X-1.jpg)
文章插图
2.7 删除镜像
curl -X DELETE https://registry.tongfu.net:5000/v2/centos/manifests/sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
2.8 垃圾回收docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
![Docker私有仓库Registry删除镜像的方法](http://img.jiangsulong.com/220506/1541133920-2.jpg)
文章插图
2.9 再次查看镜像标签列表
curl 'https://registry.tongfu.net:5000/v2/centos/tags/list'
![Docker私有仓库Registry删除镜像的方法](http://img.jiangsulong.com/220506/15411353X-3.jpg)
文章插图
可以看到tags为null,也就是说已经被删除了~~
2.10 查看镜像
curl 'https://registry.tongfu.net:5000/v2/_catalog'
![Docker私有仓库Registry删除镜像的方法](http://img.jiangsulong.com/220506/1541132491-4.jpg)
文章插图
我去!!!怎么还TM在这呢啊~~~~~~
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/centos
3.2 垃圾回收docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
3.3 重启仓库容器docker restart registry
3.4 查看镜像curl 'https://registry.tongfu.net:5000/v2/_catalog'
![Docker私有仓库Registry删除镜像的方法](http://img.jiangsulong.com/220506/1541134235-5.jpg)
文章插图
终于删除掉了~~~
4. 总结Docker私有仓库Registry服务器删除镜像的坑还是真挺多的,最坑爹的莫过于官方的方法不能真正的删除服务器上面的镜像文件,只是把镜像的tags给干掉了而已,真是太恶心了~~
福哥推荐使用暴力方法删除镜像,这样既删除的彻底,又不用开启storage的delete开关,安全可靠~~
推荐阅读
- 雷蛇|“灯厂”雷蛇将于本月退市私有化 95%股东投票支持
- docker MySQL数据库的备份与还原,以及每天定时自动备份
- docker版本rabbitMq延迟队列
- docker容器与传统虚拟机对比
- 12 个优化 Docker 镜像安全性的技巧
- 本地新项目如何推送到gitlab仓库
- Docker容器监控:cAdvisor+InfluxDB+Grafana
- G5 阿里云ECS服务器安装配置docker
- Docker安装mysql5.7.37主从
- 物流仓库盘点注意事项