通过删除服务器上的文件/文件夹来删除注册表中的 docker 镜像

通过删除服务器上的文件/文件夹来删除注册表中的 docker 镜像

我在 docker-registry v2 中删除图像或标签时遇到以下问题:

我有一台运行 docker-registry 的服务器。我创建了一个镜像并推送了它,现在我想把它删除。现在我想删除这个镜像(或者至少删除标签,如果镜像不可能的话)。

当前前端版本不支持此类功能。

我尝试通过curl -u MY_USERNAME -X DELETE MY_DOMAIN:PORT/v2/IMAGE_NAME/manifests/REFERENCE命令(如HTTP API referencestates)输入密码,但执行结果为空行,没有身份验证错误(身份验证已激活)或成功消息。标签仍然可用。

由于我可以访问服务器,我想到了以下想法:我可以简单而安全地删除文件夹v2/repositories/IMAGE_NAME/_manifests/tags/VERSION(或其他文件/文件夹)吗?或者这会导致注册表中断?我必须执行哪些初始步骤(例如停止注册表服务)?

答案1

是的,他们没有让这变得简单,而且它仍然不完美,但是 v2 注册表 API 现在可以删除图像。

我可以简单而安全地删除文件夹 v2/repositories/IMAGE_NAME/_manifests/tags/VERSION 吗?

实际的图像数据存储在磁盘上的 blobs 目录中,但它们在不同的清单之间共享,因此,除非您考虑过可能共享 blobs 的所有图像,否则清除该目录是不安全的。

以下是使用 v2 docker API 删除镜像的方法:

首先,您的注册表必须启用 DELETE。 设置环境变量:

REGISTRY_STORAGE_DELETE_ENABLED: "true"

或者在 config.yml 中设置

storage:
  delete:
    enabled: true

接下来,通过 API 调用运行删除(您可以通过 Postman 或使用 curl/etc 轻松测试)

笔记:在以下调用中,添加"Accept: application/vnd.docker.distribution.manifest.v2+json"到 HTTP 标头

  1. 收集图像摘要:

    HEAD https://myprivateregistry:5001/v2/<image_name>/manifests/<image_tag>

    Docker-Content-Digest此调用返回带有如下值的标头键:sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd

  2. 使用步骤 2 中的值,运行DELETEhttp 调用:

    DELETE https://myprivateregistry:5001/v2/<image_name>/manifests/sha256:b57z31xyz0f616e65f106b424f4ef29185fbd80833255d79dabc73b8eb873bd

    API 返回202 Accepted

  3. 如果您不想等待下一次预定的运行,请手动运行垃圾收集:registry garbage-collect /etc/docker/registry/config.yml

    如果将注册表作为容器运行的示例:docker exec -t registry-test ./bin/registry garbage-collect /etc/docker/registry/config.yml

    垃圾收集器会从磁盘中删除相关的 blob 和清单。

此时,image:tag 已从磁盘中完全删除并从注册表中清除。这些 blob 已被删除,你会看到清单已从v2/repositories/<image_name>/_manifests

注意:如果这是您的存储库中的最后一个图像,您仍然必须手动从磁盘中删除存储库列表(v2/repositories/<image_name>/_layers) - 但这只是元数据。实际的图像数据已被删除。我相信这可能是垃圾收集器中的一个错误。我在这里有一个问题:Docker Private Registry-已删除所有图像,但仍显示在目录中

更多细节:

https://docs.docker.com/registry/spec/api/#deleting-an-image https://jsosic.wordpress.com/2017/01/23/deleting-images-from-docker-registry/

相关内容