这对我来说确实很困惑。我认为Docker的Image 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这本书时,我对此感到困惑,也没有在书上或在线上找到清晰的答案。