docker registry删除远程仓库镜像

当集群内使用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删除镜像 

猜你喜欢

转载自blog.csdn.net/zfw_666666/article/details/128918101