Docker - 如何从私有仓库中删除镜像。

15

目前还没有一个好的答案可以回答“如何从Docker私有仓库中删除镜像”的问题。

已经尝试过以下方法:
无法从注册表中删除Docker镜像
如何从私有Docker仓库中删除镜像?
如何从私有Docker仓库中“删除”镜像?
但以上方法似乎都不起作用。

和其他人一样,我也已经尝试了:

DELETE /v2/orassayag/osr_streamer_nginx/manifests/sha256:051adb935bff30abba811fd64da28a5f3b19a48f07c74b067e3bd61ab91152b5 HTTP/1.1

并且

DELETE /v2/orassayag/osr_streamer_nginx/manifests/051adb935bff30abba811fd64da28a5f3b19a48f07c74b067e3bd61ab91152b5 HTTP/1.1

并且每次都获得:

{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
有人成功过吗?

更新:
我给出的链接中的解决方案都不起作用,仍会收到“不支持”的错误提示。


更新:
我提供的链接中的所有解决方法都无效,仍会出现“不支持”的错误。


可能是如何从私有Docker注册表中删除图像?的重复问题。 - David Maze
这个回答中包含了一系列相关的HTTP API调用,而其他回答则包括至少三个外部工具链接。看起来你需要删除图像标签以及其下面的特定层清单。 - David Maze
已经尝试过它们,仍然出现“不支持”的错误。 - Or Assayag
1
有运气了吗?我也遇到同样的问题。真的希望有一种可靠快速的方法来处理过期的图像。 - emmdee
2个回答

4
这是一个 Python 脚本,用于删除私有仓库中的所有镜像,在我的私有仓库上运行正常。
import requests
for repo in requests.get('https://192.168.2.31:5000/v2/_catalog', verify=False).json()['repositories']:
    headers = requests.get('https://192.168.2.31:5000/v2/%s/manifests/v1' % repo, headers = {'Accept': 'application/vnd.docker.distribution.manifest.v2+json'}, verify=False).headers
    if 'Docker-Content-Digest' in headers:
        requests.delete('https://192.168.2.31:5000/v2/%s/manifests/%s' % (repo, headers['Docker-Content-Digest']), verify=False)

-1
您可以通过Docker Web界面删除标签 - 登录后,打开图像所在的存储库,切换到名为“标签”的选项卡,找到要删除的图像 - 在右侧有一个看起来像垂直三个点的按钮 - 单击它时会显示“删除”选项 - 当您删除此标签时,也会删除“常规”选项卡上相关的图像。 希望这是您想要实现的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接