我正在尝试使用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"]}
可能是什么问题或我哪里出错?
答案 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
希望它有所帮助...