Pet*_*ake 9 docker docker-registry
我有一个私有 Docker 注册表 v2.6.0,其中包含一个映像上的几个标记版本:
foo/bar:1
foo/bar:1_keep (same image as 1)
foo/bar:2
foo/bar:3
foo/bar:latest (same image as 3)
Run Code Online (Sandbox Code Playgroud)
我想删除单个标签而不必删除图像。因此,如果我删除标签 2,则可以删除该图像,因为没有其他内容引用它。但是如果我删除标签 1,只有那个标签应该去,而不是图像。
这表明 API 请求是这样的:
DELETE http://repo/v2/foo/bar/tags/1
Run Code Online (Sandbox Code Playgroud)
但这给了我一个 404。相反,我必须删除清单,这意味着做所有检查它没有被另一个标签使用的工作。
我查看了https://github.com/fraunhoferfokus/deckschrubber的来源,它似乎并没有在检查删除手稿是否安全时遇到麻烦。我错过了什么吗?
有没有更好的方法来做到这一点?如果没有,为什么不,它可能会被修复?
目前没有用于删除特定标签的 api。从理论上讲,您可以将新的(可能是空的)清单推送到现有标签,然后将其删除。否则,您将需要跟踪清理例程中的所有标签和清单,以确定可以安全删除的内容。
更新:
标记删除已添加到现在的 1.0 OCI 分发规范中。这样,拉取请求 (#3427)被批准分发/分发,这是注册表映像的上游。它获得了 3.0 版本的里程碑,因此这可能是将来添加的功能。
我还一直在研究regclient,它实现了标签删除 API,并退回到推送空清单并删除它。对于 CLI,regclient 包括 regctl,它看起来像:
regctl tag rm registry:5000/repo:tag
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15192 次 |
| 最近记录: |