docker registry删除远程仓库镜像实现方式
作者:CN-FuWei
文章介绍如何清理Docker Registry中堆积的镜像,通过配置删除功能、启动容器、查看镜像信息并执行删除操作,同时提供基于web-ui的管理方案,优化存储空间使用
当集群内使用registry做为镜像仓库时,镜像长期积累会导致本地和远程仓库镜像占用大量的磁盘空间,这时我们需要对一些无用镜像进行定期清理。
一、部署registry
1.1 开启删除功能
从registry容器里面将/etc/docker/registry/config.yml复制出来:
docker cp registry:/etc/docker/registry/config.yml ./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: 3
设置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: 31234567891011121314151617181920
1.2 启动registry容器
docker run -it -d --name registry -p 5000:5000 -v /opt/registry/:/var/lib/registry -v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml --restart=always registry
1.3 查看镜像名称
curl -s -XGET localhost:5000/v2/_catalog | python -mjson.tool
1.4 查看镜像tag
curl -s XGET localhost:5000/v2/test/tags/list|jq
1.5 查看镜像reversion
ll /opt/registry/docker/registry/v2/repositories/test/_manifests/revisions/sha256/ #或者通过API获取镜像digest值 curl -i -sS -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' 'http://localhost:5000/v2/test/manifests/latest'
1.6 删除镜像
curl -X DELETE localhost:5000/v2/test/manifests/sha256:703c4d81c860a7420749f6666aac348e1b62a07062865dfb91d4c30819483e70
1.7 垃圾回收
docker exec -it 9658cbb01b13 registry garbage-collect /etc/docker/registry/config.yml
1.8 清除目录
rm -rf /var/lib/docker/volumes/78c1937e0a8c810c8e4249d0245b4777ac4e66428519376712d99b811e559758/_data/docker/registry/v2/repositories/test_his_platform_global_api_2022-02-18-02-46
二、web-ui管理registry
docker hub 地址:https://hub.docker.com/r/hyper/docker-registry-web
2.1 部署docker-registry-web
docker pull hyper/docker-registry-web
(此配置中的任何属性都可能被环境变量覆盖,例如属性registry.auth.enabled将变为REGISTRY_AUTH_ENABLED)
registry: # Docker registry url url: http://10.0.0.100:5000/v2 # Docker registry fqdn name: localhost:5000 # To allow image delete, should be false readonly: false auth: # Disable authentication enabled: false
使用 docker 运行
docker run -p 5000:5000 --name registry -d registry:2 docker run -it -p 8083:8080 --name registry-web --link registry -v $(pwd)/config.yml:/conf/config.yml:ro hyper/docker-registry-web
访问http://localhost:8083
2.2 使用web ui删除镜像
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。