之前,我按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"}]}
答案 0 :(得分:1)
Docker Registry刚刚删除了清单,但没有删除图像的blob。为了正确删除图像,仍有工作要做。此时,垃圾收集器does not collect untagged manifests。
我已经实现了一个脚本来从注册表中删除未标记或特定的图像。
https://github.com/ricardobranco777/clean_registry.sh
编辑:请改用ricardobranco / clean_registry Docker图像。
详细信息:
答案 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提供了该功能,并且可以在我的验证中正常使用。