web-dev-qa-db-fra.com

Où puis-je trouver le code sha256 d'une image de menu fixe?

Je voudrais tirer les images de centos, Tomcat, ... en utilisant leur code sha256, comme dans 

docker pull myimage@sha256:0ecb2ad60

mais je ne trouve pas le code sha256 à utiliser n'importe où.

J'ai vérifié dans le référentiel dockerhub la moindre trace du code sha256, mais je n'ai pas pu en trouver. J'ai téléchargé les images par leur tag 

docker pull Tomcat:7-jre8

et vérifié l'image avec docker inspect pour voir s'il y a un code sha256 dans les métadonnées, mais il n'y en a pas (l'ajout du code sha256 de l'image changerait probablement le code sha256).

Dois-je calculer moi-même le code sha256 d'une image et l'utiliser? 

37
christian

Je viens de le voir:

Lorsque je tire une image, le code sha256 est affiché au bas de la sortie (Digest: sha ....):

docker pull Tomcat:7-jre8
7-jre8: Pulling from library/Tomcat
902b87aaaec9: Already exists 
9a61b6b1315e: Already exists 
...   
4dcef5c50d60: Already exists 
Digest: sha256:c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f
Status: Image is up to date for Tomcat:7-jre8

Ce code sha 

sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

peut être utilisé pour tirer l'image ensuite avec 

docker pull Tomcat @ sha256: c34ce3c1fcc0c7431e1392cc3abd0dfe2192ffea1898d5250f199d3ac8d8720f

De cette façon, vous pouvez être sûr que l'image n'est pas modifiée et qu'elle peut être utilisée en toute sécurité pour la production.

14
christian

Dernière réponse

Modification suggérée par OhJeez dans les commentaires.

docker inspect --format='{{index .RepoDigests 0}}' $IMAGE

Réponse originale

Je crois que vous pouvez également obtenir ceci en utilisant

docker inspect --format='{{.RepoDigests}}' $IMAGE

Ne fonctionne que dans Docker 1.9 et si l’image a été tirée à l’origine par le résumé. Les détails sont sur le traqueur de problèmes de docker.

41
Michael Barton

Vous pouvez l'obtenir par docker images --digests

REPOSITORY          TAG    DIGEST                                                                    IMAGE ID     CREATED        SIZE
docker/ucp-agent    2.1.0  sha256:a428de44a9059f31a59237a5881c2d2cffa93757d99026156e4ea544577ab7f3   583407a61900 3 weeks ago    22.3 MB

Outre les réponses existantes, vous pouvez utiliser l'option --digests en docker images pour obtenir une liste des résumés de toutes les images que vous avez.

docker images --digests

Vous pouvez ajouter un grep pour approfondir

docker images --digests | grep Tomcat
3
BKC

Cela aurait dû être le champ Id, que vous pouviez voir dans l'ancien obsolèteAPI Docker Hub

GET /v1/repositories/foo/bar/images HTTP/1.1
  Host: index.docker.io
  Accept: application/json

Parameters:

namespace – the namespace for the repo
repo_name – the name for the repo

Exemple de réponse:

HTTP/1.1 200
Vary: Accept
Content-Type: application/json

[{"id": "9e89cc6f0bc3c38722009fe6857087b486531f9a779a0c17e3ed29dae8f12c4f",
"checksum": "b486531f9a779a0c17e3ed29dae8f12c4f9e89cc6f0bc3c38722009fe6857087"},
{"id": "ertwetewtwe38722009fe6857087b486531f9a779a0c1dfddgfgsdgdsgds",
"checksum": "34t23f23fc17e3ed29dae8f12c4f9e89cc6f0bsdfgfsdgdsgdsgerwgew"}]

MAIS: c’est pas comment cela fonctionne maintenant avec la nouvelle distribution de menu fixe.
Voir numéro 628: "Obtenir l’ID image avec le nom de balise"

La réponse du registre /v1//repositories/<repo>/tags utilisée pour répertorier l'ID de l'image avec le descripteur de balise.
/v2/ semble seulement donner le manche. 

Il serait utile d’obtenir l’ID à comparer à l’ID trouvé localement. Le seul endroit où je peux trouver l'ID se trouve dans la section v1Compat du manifeste (ce qui est excessif pour l'info que je veux)

La réponse actuelle (mi-2015) est la suivante:

Cette propriété de l'API V1 était très coûteuse en calcul de la manière dont les images sont stockées sur le backend. Seuls les noms de balises sont énumérés pour éviter une recherche secondaire.
De plus, l'API V2 ne traite pas les ID d'image. Au lieu de cela, il utilise des résumés pour identifier les calques, qui peuvent être calculés comme une propriété du calque et sont vérifiables indépendamment.

3
VonC

Il suffit d'émettre à nouveau docker pull Tomcat:7-jre8 et vous obtiendrez ce que vous voulez.

0
okwap