web-dev-qa-db-fra.com

Quelle est la différence entre l'ID d'image d'une image Docker et son résumé?

Cela a été étonnamment déroutant pour moi. Je pensais que l'ID d'image de Docker était son hachage SHA256. Cependant, apparemment, le résultat de docker image ls --digests (répertorié sous l'en-tête de colonne DIGEST) est différent du IMAGE ID de cette image.

Par exemple

docker image ls --digests Alpine
REPOSITORY          TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
Alpine              latest              sha256:769fddc7cc2f0a1c35abb2f91432e8beecf83916c421420e6a6da9f8975464b6   055936d39205        2 weeks ago         5.53MB

tandis que

docker image ls --no-trunc
REPOSITORY                                             TAG                 IMAGE ID                                                                  CREATED             SIZE
...
Alpine                                                 latest              sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1   2 weeks ago         5.53MB

Clairement sha256:055936d3920576da37aa9bc460d70c5f212028bda1c08c0879aedf03d7a66ea1 (ID IMAGE) et sha256:769fddc7cc2f0a1c35abb2f91432e8beecf83916c421420e6a6da9f8975464b6 (DIGEST) n'ont pas la même valeur. Mais pourquoi? Quel est le but d'avoir deux sha256 hachages de la même image. Comment sont-ils calculés, respectivement?

Cela m'a dérouté en lisant le livre Docker Deep Dive, et je n'ai pas pu trouver de réponse claire ni dans le livre ni en ligne.

10
xji

Merci pour le commentaire de michalk. La réponse courte est:

  • Le "condensé" est un hachage du manifeste, introduit dans le registre Docker v2.
  • L'ID d'image est un hachage de la configuration JSON d'image locale.
7
xji