Docker Registry v2图像无法删除

时间:2017-02-19 14:18:05

标签: docker docker-registry

之前,我按API列出图像:

   curl docker-registry:5000/v2/_catalog
    {"repositories":
        ["tmp.eium.ems"]
    }

然后我通过以下方式找到图像摘要:

curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" -X GET http://docker-registry:5000/v2/tm
p.eium.ems/manifests/latest
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
   "config": {
      "mediaType": "application/vnd.docker.container.image.v1+json",
      "size": 7440,
      "digest": "sha256:8e9a0dfac41f87fdb04e2e9ab7bb64750e71ee58701f024e498fdbcf69c2d082"
   },
...

然后我用CLI删除它:

[root@snap460c04 tmp]# curl -X DELETE docker-registry:5000/v2/tmp.eium.ems/blobs/sha256:8e9a0dfac41f87fdb04e2e9ab7bb64750e71ee58701f024e498fdbcf69c2d082

没有任何错误。 但是当我检查它时,图像仍然存在:

[root@snap460c04 tmp]# curl docker-registry:5000/v2/_catalog
{"repositories":["tmp.eium.ems"]}

不能有人帮忙吗?

我认为我的删除确实有效,因为如果我再次执行删除操作,则会报告错误:

[root@snap460c04 tmp]# curl -X DELETE docker-registry:5000/v2/tmp.eium.ems/manifests/sha256:8e9a0dfac41f87fdb04e2e9ab7bb64750e71ee58701f024e498fdbcf69c2d082
{"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown"}]}

3 个答案:

答案 0 :(得分:1)

Docker Registry刚刚删除了清单,但没有删除图像的blob。为了正确删除图像,仍有工作要做。此时,垃圾收集器does not collect untagged manifests

我已经实现了一个脚本来从注册表中删除未标记或特定的图像。

https://github.com/ricardobranco777/clean_registry.sh

编辑:请改用ricardobranco / clean_registry Docker图像。

详细信息:

https://github.com/ricardobranco777/clean_registry

答案 1 :(得分:1)

您可能没有使用正确的删除摘要,或者缺少第二个也删除的摘要。 使用 "Accept: application/vnd.docker.distribution.manifest.list.v2+json" 标头可能(已经)返回(编辑)另一个要删除的摘要以删除完整的标签。

regclient 完成工作:

regctl tag delete docker-registry:5000/tmp.eium.ems:latest

答案 2 :(得分:0)

tool提供了该功能,并且可以在我的验证中正常使用。