docker 镜像的 sha256 哈希在存储库之间是否不同?

Tho*_*sen 6 sha256 docker docker-registry

我刚刚将 Docker 镜像从一个存储库复制到另一个存储库,方法是从 OpenShift 3.11 外部存储库中提取显式 sha256 哈希标签,将其重新标记到我们的 Harbor 1.9.2 存储库并推送该标签。

在此过程中,显示​​了新图像的 sha256 密钥,它与我开始使用的 sha256 密钥不同。这是出乎意料的,因为我没有对图像进行任何更改,除了为其分配另一个标签之外,因此字节应该相同,给出相同的哈希值。

这是否意味着算法由于某种原因而不同?存储库名称是否包含在哈希键计算中?或者是其他东西?

Pra*_*obo 6

您将图像 ID 摘要与图层摘要混淆了。如果您查看docker inspect这些图像,您会发现底层摘要将完全匹配。

注册表中的每个图像都有一个图像 ID。运行docker images --digests --no-trunc并注意,您将看到摘要列和图像 id 列,并且它们并不相同。摘要列是清单的摘要,显示为RepoDigests输出所示docker inspect。如果清单包含名称和标签,则摘要也会不同。

也尝试一下diff <(docker inspect image_id_1) <(docker inspect image_id_2)看看发生了什么。

有关更多详细信息,请参阅此答案本文。