首页 > 解决方案 > 从私有注册表中删除 docker 映像会导致 - 不支持该操作

问题描述

我正在尝试使用 API 调用从私有 docker 注册表中删除图像-

curl -X DELETE http://<ip>:5000/v2/lightweighttest/manifests/lightweighttest:1

但这会导致 -

{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}

我用谷歌搜索了同样的东西,但它建议 -

  1. 运行带有标志的 docker 注册表 -REGISTRY_STORAGE_DELETE_ENABLED=true 但因为我已经有运行大量图像的 docker 注册表。这对我没有帮助

  2. 在位于/var/lib/registry/etc/docker/registry 但我在两个位置都找不到registry目录的配置文件中进行以下更改 -

    存储:删除:启用:真

请建议我如何通过运行 docker 注册表从私有注册表中删除图像?

标签: dockerdevopsdocker-registry

解决方案


  1. 您需要检查注册表版本,只有注册表2支持通过URL删除图像。
  2. 您需要注册表的位置来触发垃圾收集。默认情况下它是 at/etc/docker/registry/config.yml但你可以ps在容器中运行它应该是进程 1 的参数。
  3. 如果您可以重新启动容器,则可以将环境变量添加到入口点,例如在容器内部:sed -i -e '/exec/iexport REGISTRY_STORAGE_DELETE_ENABLED=true' entrypoint.sh

但是,我真的建议您使用卷,因为容器 overflay fs 的性能较低,您无法升级,而且我会丢失所有图像。


推荐阅读