Ich möchte die Bilder von Centos, Tomcat, ... mit ihrem sha256-Code ziehen, wie in
docker pull myimage@sha256:0ecb2ad60
aber ich kann den sha256-code nirgendwo finden.
Ich habe im Dockerhub-Repository nach Hinweisen auf den sha256-Code gesucht, aber keine gefunden. Ich habe die Bilder nach ihrem Tag heruntergeladen
docker pull tomcat:7-jre8
und überprüfte das Bild mit docker inspect
, um festzustellen, ob es einen sha256-Code in den Metadaten gibt, aber es gibt keinen (das Hinzufügen des sha256-Codes des Bildes würde wahrscheinlich den sha256-Code ändern).
Muss ich den sha256-Code eines Bildes selbst berechnen und verwenden?
docker
docker-registry
Christian
quelle
quelle
Antworten:
Letzte Antwort
Bearbeiten vorgeschlagen von OhJeez in den Kommentaren.
Ursprüngliche Antwort
Ich glaube, Sie können dies auch mit bekommen
Funktioniert nur in Docker 1.9 und wenn das Image ursprünglich vom Digest gezogen wurde. Details finden Sie im Docker Issue Tracker.
quelle
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE
für keine geschweiften Klammern (gibt den ersten Index des Arrays zurück)Sie können es durch bekommen
docker images --digests
quelle
docker images --format '{{.Digest}}'
. Dies ist in einerforeach
Anweisung nützlich , um einige Arbeiten mit den Digests zu erledigen.Hab es gerade gesehen:
Wenn ich ein Bild ziehe, wird der sha256-Code am unteren Rand der Ausgabe angezeigt (Digest: sha ....):
Dieser sha Code
kann verwendet werden, um das Bild anschließend mit zu ziehen
Auf diese Weise können Sie sicher sein, dass das Bild nicht geändert wird und sicher für die Produktion verwendet werden kann.
quelle
Der einfachste und prägnanteste Weg ist:
docker images --no-trunc --quiet $IMAGE
Dies gibt nur die zurück
sha256:...
Zeichenfolge und nichts anderes zurück.z.B:
Bearbeiten:
HINWEIS: Dies funktioniert nur für lokale Bilder. Sie können
docker pull $IMAGE
bei Bedarf zuerst.quelle
Zusätzlich zu den vorhandenen Antworten können Sie die
--digests
Option verwendendocker images
, um eine Liste der Zusammenfassungen für alle Bilder zu erhalten, die Sie haben.Sie können einen Grep hinzufügen, um einen weiteren Drilldown durchzuführen
quelle
Dies sollte das ID-Feld gewesen sein, das Sie in der alten veralteten Docker Hub-API sehen konnten
ABER: Das ist nicht , wie es jetzt mit der arbeitet neue Docker Verteilung .
Siehe Problem 628: "Bild-ID mit Tag-Namen abrufen"
Die aktuelle Antwort (Mitte 2015) lautet:
quelle
Ich habe festgestellt, dass die oben genannten Methoden in einigen Fällen nicht funktionieren. Sie entweder:
Die folgende Methode ist heikel, funktioniert jedoch zum Extrahieren des spezifischen vollständigen "Namens" und des Hashs für einen bestimmten Push-Container.
Hier ist das Szenario: Ein Bild wird separat in zwei verschiedene Projekte im selben Repo hochgeladen. Wenn Sie also RepoDigests abfragen, erhalten Sie zwei Ergebnisse.
Ich möchte das Alpha-Ergebnis verwenden, kann aber nicht vorhersagen, um welchen Index es sich handelt. Ich muss also die Textausgabe manipulieren, um die Klammern zu entfernen und jeden Eintrag in einer separaten Zeile abzurufen. Von dort kann ich das Ergebnis leicht erfassen.
quelle
Wie von @zelphir erwähnt, ist die Verwendung von Digests kein guter Weg, da sie für ein nur lokales Image nicht vorhanden ist. Ich gehe davon aus, dass die Bild-ID sha über Tags / Pull / Push usw. hinweg am genauesten und konsistentesten ist.
Macht den Trick.
quelle
Sie finden es zum Zeitpunkt des Abrufs des Bildes aus dem jeweiligen Repository. Der folgende Befehl erwähnt Digest: sha256 zum Zeitpunkt des Abrufs des Docker-Images.
09:33 ## ~ ::> Docker --version Docker Version 19.03.4, Build 9013bf5
Digest: sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Sobald das Bild heruntergeladen ist, können wir Folgendes tun
ubuntu @ sha256: 6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
quelle
Einfach
docker pull tomcat:7-jre8
nochmal ausstellen und du bekommst was du willst.quelle