1

我正在尝试使用遵循命令的 API v2 从 Docker Registry 中删除图像:

curl -k -v -u 'docker:sdf' -X DELETE https://localhost:5000/v2/bkf/ebbg/manifests/1

但我得到下一个错误:

> DELETE /v2/bkf/ebbg/manifests/1 HTTP/1.1
> Authorization: Basic ZG9ja2VyOkRrZmxidmJoMjAx==
> User-Agent: curl/7.35.0
> Host: localhost:5000
> Accept: */*
>
< HTTP/1.1 400 Bad Request
< Content-Type: application/json; charset=utf-8
< Docker-Distribution-Api-Version: registry/2.0
< X-Content-Type-Options: nosniff
< Date: Mon, 14 Mar 2016 07:56:13 GMT
< Content-Length: 98
<
{"errors":[{"code":"DIGEST_INVALID","message":"provided digest did not match uploaded content"}]}

命令:

curl -u 'docker:sdf' -X GET https://localhost:5000/v2/_catalog

节目

{"repositories":["bkf/ebbg"]}

命令

curl -k -u 'docker:sdf' -X GET https://localhost:5000/v2/bkf/ebbg/tags/list

节目

{"name":"bkf/ebbg","tags":["32","1","latest","12","33","34"]}

可能是什么问题或我哪里出错了?

4

2 回答 2

3

我设法通过删除标签来解决这个问题,但存储库仍然存在。

您需要的第一个命令将为您提供摘要:

curl -k -v -u 'docker:sdf' -X HEAD -v https://localhost:5000/v2/bkf/ebbg/manifests/1

这将在标题中返回您需要的摘要。

< Docker-Content-Digest: sha256:xxxxxxx

然后,您需要使用摘要进行 DELETE 调用:

curl -k -v -u 'docker:sdf' -X DELETE -v --header "Accept: application/vnd.docker.distribution.manifest.v2+json" https://localhost:5000/v2/bkf/ebbg/manifests/sha256:xxxxxxx

如果成功,它将返回:

202 接受

这确实删除了标签,但就像我说的那样,存储库仍然存在。我需要做更多的工作来找出原因。

于 2016-04-21T16:26:21.860 回答
1

您的用例的答案可能是delete_docker_registry_image.py 我在我的注册表上尝试过,显然它成功了 :) 由于读取 python 源代码并不太复杂,您可以从那里了解何时以及如何完成的操作 - 或只需使用它:P

希望能帮助到你 ...

于 2016-07-15T07:10:29.350 回答