原文链接:https://blog.csdn.net/yogima/article/details/122172744
如果需要彻底删除,只需进行register 磁盘删除镜像 彻底删除了,就可以到达彻底删除的目的。
如果只需要软删除,则只需进行通过API删除。
curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" \-I -X GET \--cert /path/to/client.crt \--key /path/to/client.key \--cacert /path/to/ca.crt \
通过API删除:
一、查询镜像digest值1、其中--cacert /xx/data/middle/registry/certs/xxx-svc.crt \ 表示证书位置curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET http://xxxxx:5000/v2(固定不动)/test(镜像路径)/tomcat(镜像名称)/manifests(固定不动)/V1.1.0(镜像版本)curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" \-I -X GET \--cacert /xxx/data/middle/registry/certs/registry-svc.crt \https://registry-svc.xxx.svc.cluster.local:8080/v2/xxx/manifests/xxx得到:
HTTP/2 200
content-type: application/vnd.docker.distribution.manifest.v2+json
docker-content-digest: sha256:db7ff657755b43e973a39a6b7965db66295b9b58ffeb367758cd87xxxxxx
docker-distribution-api-version: registry/2.0
etag: "sha256:db7ff657755b43e973a39a6b7965db66295b9b58ffeb367758cd87xxxxxx"
x-content-type-options: nosniff
content-length: 5164
date: Wed, 27 Nov 2024 08:44:07 GMT
第二步: 执行删除curl -X DELETE http://xxx:5000/v2/xx/xxx/manifests/sha256:fb26b27060091b971a1e9ec332c15eeac09a079a4c201808426adae940cbxxxx此时若删除成功,则调用
curl -X GET http://xxx:5000/v2/xx/xxx/tags/list时返回结果中tags为null,示例:
{“name”:“test/tomcat”,“tags”:null}
register 磁盘删除镜像 彻底删除了一、删除目录 在清除blobs后,使用curl http://xxx:5000/v2/_catalog依旧能查询到镜像目录,因此还需要进行目录删除操作。注意这里的镜像名是包含路径的,例如test/tomcat。docker exec <容器名> rm -rf /var/lib/registry/docker/registry/v2/repositories/<镜像名>二、使用registry gc清除blobs方法一 、容器外外外外外执行: docker exec docker-registry(容器名) bin/registry garbage-collect /etc/docker/registry/config.yml方法二 、容器内内内内内执行: docker exec -it docker-registry /bin/sh cd /var/lib/registry/ #切换到数据目录: du -sch #查看磁盘使用情况 registry garbage-collect /etc/docker/registry/config.yml #执行垃圾回收 du -sch #查看磁盘使用情况