docker - 从私有注册表中删除 docker 映像会导致 - 不支持该操作
问题描述
我正在尝试使用 API 调用从私有 docker 注册表中删除图像-
curl -X DELETE http://<ip>:5000/v2/lightweighttest/manifests/lightweighttest:1
但这会导致 -
{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
我用谷歌搜索了同样的东西,但它建议 -
运行带有标志的 docker 注册表 -
REGISTRY_STORAGE_DELETE_ENABLED=true
但因为我已经有运行大量图像的 docker 注册表。这对我没有帮助在位于
/var/lib/registry
或/etc/docker/registry
但我在两个位置都找不到registry
目录的配置文件中进行以下更改 -存储:删除:启用:真
请建议我如何通过运行 docker 注册表从私有注册表中删除图像?
解决方案
- 您需要检查注册表版本,只有注册表2支持通过URL删除图像。
- 您需要注册表的位置来触发垃圾收集。默认情况下它是 at
/etc/docker/registry/config.yml
但你可以ps
在容器中运行它应该是进程 1 的参数。 - 如果您可以重新启动容器,则可以将环境变量添加到入口点,例如在容器内部:
sed -i -e '/exec/iexport REGISTRY_STORAGE_DELETE_ENABLED=true' entrypoint.sh
但是,我真的建议您使用卷,因为容器 overflay fs 的性能较低,您无法升级,而且我会丢失所有图像。
推荐阅读
- java - 如何让代码知道是手动运行还是通过管道运行?
- google-apps-script - 谷歌脚本复制和粘贴
- css - 为什么我的 sass 在过去几天一直在工作之后现在不起作用
- c# - 报表服务器中的基本每像素调整大小
- r - 如何将列表列表转换为具有差异列表结构的数据框
- asp.net - Crystal Reports ASPX - 由于页面的相关配置数据无效,无法访问请求的资源
- flutter - 无法无条件访问属性“文档”,因为接收者可以为“空”
- javascript - 调用 removeEventListener 后滚动事件仍然有效
- flutter - 通过删除元素刷新列表视图构建器
- android - 在 EditText 中仅显示英文键盘