这让我感到非常困惑。我认为 Docker 的镜像 ID 是它的 SHA256 哈希值。但是,显然
docker image ls --digests
(列在列标题 DIGEST
下)的结果与该图像的 IMAGE ID
不同。
例如
$ docker image ls --digests alpine
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
alpine latest sha256:769fddc7cc2f0a1c35abb2f91432e8beecf83916c421420e6a6da9f8975464b6 055936d39205 2 weeks ago 5.53MB
同时
$ docker image ls --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
...
alpine latest sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1 2 weeks ago 5.53MB
显然
sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1
(图像 ID)和sha256:769fddc7cc2f0a1c35abb2f91432e8beecf83916c421420e6a6da9f8975464b6
(摘要)
不是相同的值。但为什么?同一张图像有两个不同的 sha256
哈希值的目的是什么?分别是如何计算的?在阅读《Docker Deep Dive》这本书时,我对此感到困惑,无论是在书中还是在网上,我都无法找到明确的答案。
“摘要”是清单的哈希值,在 Docker 注册表 v2 中引入。