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 nulle part.
J'ai vérifié le référentiel dockerhub pour tout indice du code sha256, mais je n'en ai trouvé aucun. 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?
docker
docker-registry
Christian
la source
la source
Réponses:
Dernière réponse
Edit suggéré par OhJeez dans les commentaires.
Réponse originale
Je pense que vous pouvez également obtenir cela en utilisant
Fonctionne uniquement dans Docker 1.9 et si l'image a été extraite à l'origine par le condensé. Les détails sont sur le tracker de problèmes de docker.
la source
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
sans accolades (retourne le premier index du tableau)Vous pouvez l'obtenir
docker images --digests
la source
docker images --format '{{.Digest}}'
. Ceci est utile dans uneforeach
instruction pour travailler avec les résumés.Je viens de le voir:
Lorsque je tire une image, le code sha256 est affiché en bas de la sortie (Digest: sha ....):
Ce code sha
peut être utilisé pour tirer l'image par la suite avec
De cette façon, vous pouvez être sûr que l'image n'est pas modifiée et peut être utilisée en toute sécurité pour la production.
la source
Le moyen le plus simple et le plus concis est:
docker images --no-trunc --quiet $IMAGE
Cela ne renvoie que la
sha256:...
chaîne et rien d'autre.par exemple:
Éditer:
REMARQUE: cela ne fonctionne que pour les images locales. Vous pouvez d'
docker pull $IMAGE
abord, si nécessaire.la source
En plus des réponses existantes, vous pouvez utiliser l'
--digests
option tout en faisantdocker images
pour obtenir une liste de résumés pour toutes les images que vous avez.Vous pouvez ajouter un grep pour approfondir
la source
Cela aurait dû être le champ Id, que vous pouviez voir dans l'ancienne API Docker Hub obsolète
MAIS: ce n'est pas ainsi que cela fonctionne maintenant avec la nouvelle distribution de docker .
Voir le problème 628: "Obtenir l'ID d'image avec le nom de la balise"
La réponse actuelle (mi-2015) est:
la source
J'ai trouvé que les méthodes ci-dessus ne fonctionnaient pas dans certains cas. Ils soit:
La méthode ci-dessous est délicate, mais fonctionne pour extraire le «nom» complet spécifique et le hachage pour un conteneur poussé spécifique.
Voici le scénario - Une image est téléchargée séparément vers 2 projets différents dans le même dépôt, donc l'interrogation de RepoDigests renvoie 2 résultats.
Je veux utiliser le résultat alpha, mais je ne peux pas prédire de quel index il s'agira. Je dois donc manipuler la sortie de texte pour supprimer les crochets et obtenir chaque entrée sur une ligne distincte. De là, je peux facilement grep le résultat.
la source
Comme mentionné par @zelphir, utiliser des résumés n'est pas un bon moyen car il n'existe pas pour une image uniquement locale. Je suppose que l'ID d'image sha est le plus précis et le plus cohérent entre les balises / pull / push, etc.
Fait l'affaire.
la source
Vous pouvez le trouver au moment de l'extraction de l'image du référentiel respectif. La commande ci-dessous mentionne Digest: sha256 au moment de l'extraction de l'image du docker.
09:33 AM ## ~ ::> docker - version Docker version 19.03.4, build 9013bf5
Résumé: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Une fois l'image téléchargée, nous pouvons faire ce qui suit
"ubuntu @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"
la source
Émettez à
docker pull tomcat:7-jre8
nouveau et vous obtiendrez ce que vous voulez.la source