我设置了一个私有docker registry(2.6.2),并从docker(18.09.0-ce,build 4d60db472b)推送了一堆图像。
在尝试删除某些标签时(如here和doc中所述),我遇到了一些问题。我想我现在找到了根本原因:很多图像清单的哈希值都不正确。
例如curl --user usr:pwd -H Accept:application/vnd.docker.distribution.manifest.v2+json https://my.server/v2/my-repo/manifests/latest
返回:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 5296,
"digest": "sha256:889..."
},
"layers": [......]
}
到目前为止,一切都很好,除了清单摘要是错误的。我了解它应该是清单的哈希(上面返回的json),但由于某种原因,它不是。如果我手动计算json的sha256哈希,则为517...
实际上,查询(或尝试删除)/v2/my-repo/manifests/sha256:889...
时得到一个404 Not Found
,而/v2/my-repo/manifests/sha256:517...
返回的则与/v2/my-repo/manifests/latest
相同。
我是否误解了预期的行为,是否遇到了错误?
这使得删除旧图像变得相当复杂,并且可能会引起其他问题。