使用API​​ v2从Docker Registry中删除图像时出错

时间:2016-03-14 08:11:38

标签: docker docker-api

我正在尝试使用API​​ v2 folloving来删除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"]}

COMAND

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"]}

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

2 个答案:

答案 0 :(得分: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接受

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

答案 1 :(得分:1)

您的用例的答案可能是delete_docker_registry_image.py 我在我的注册表上尝试过,显然它做了诀窍:) 由于阅读python源代码并不是太复杂,你可以从那里得到什么时候和如何做 - 或者只是简单地使用它:P

希望它有所帮助...