Moby: Docker-Befehl zum Überprüfen, ob ein lokales Container-Image veraltet ist?

Erstellt am 10. Feb. 2017  ·  3Kommentare  ·  Quelle: moby/moby

Sprich im Vergleich zum Remote-Image auf Dockerhub. Ich habe nach einem kanonischen Weg gesucht, aber alles, was ich finden konnte, sind spröde Bash-Skripte und dergleichen. Keine offizielle, empfohlene Methode zur Durchführung einer solchen Überprüfung. Eine Stapelüberlauffrage hat auch noch keine endgültigen Antworten ergeben. Weder hat diese ähnliche Frage .

Die Überprüfung, ob ein lokales Image im Vergleich zu seiner Remote-Version veraltet ist, ist für Entwicklungs- und Staging-Umgebungen sehr nützlich (in Docker-Cloud können Sie sogar Container für die automatische Aktualisierung dafür einrichten). Ich weiß, dass es die Möglichkeit gibt, einen Webhook zu verwenden, um nach einem erfolgreichen Image-Build ein erneutes Ziehen auszulösen, aber nehmen wir an, ich möchte die Überprüfung von meinem Server aus initiieren können, anstatt sie abhören zu müssen.

Habe ich Recht, wenn ich davon ausgehe, dass derzeit kein Docker-Befehl zur Durchführung dieser Prüfung verfügbar ist, oder habe ich eine offensichtliche native Docker-Lösung für dieses Problem verpasst?

aredistribution areimages kinquestion

Hilfreichster Kommentar

Es gibt jedoch einen Unterschied zwischen "blind aktualisieren" und der Benachrichtigung, dass das Remote-Image geändert wurde (unter Verwendung desselben Tags), sodass Sie Ihren Build- und QS-Prozess starten können.

Alle 3 Kommentare

Nein, es gibt derzeit keine integrierte Option, um zu überprüfen, ob ein Bild "veraltet" ist. Das automatische Aktualisieren von Containern unterscheidet sich je nach Anwendungsfall erheblich. Das "blinde" Aktualisieren auf das neueste Bild ist nicht trivial. Zum Beispiel kann some-image:latest zu einem völlig anderen Bild führen (z. B. ubuntu:latest bezieht sich auf die neueste "LTS" -Version, die irgendwann von 14.04 auf 16.04 umgestellt wurde), gleichzeitig some-image:1.2.3 "sieht" aus wie ein SemVer (ish) -Tag, aber es gibt keine Garantie, da es Sache des Bildautors ist, sowohl über das "Tag" -Schema als auch über dessen Bedeutung zu entscheiden (im Grunde sind Tags nur kostenlos Formular "Etikett").

Aus diesem Grund wird empfohlen, eine unveränderliche Kennung für Ihre Container zu verwenden (z. B. ubuntu<strong i="9">@sha256</strong>:aabbbcccddd ). Auf diese Weise können Sie die genaue Image-Version testen, die Sie ausführen, und haben die Garantie, dass es sich um dieselbe Version handelt, wie sie in Ihrem QS-Prozess getestet wurde.

Abgesehen davon gibt es einige Optionen;

  • Wenn Sie docker compose , können Sie docker-compose pull , um die neueste Version aller in Ihrem Compose-Stack verwendeten Bilder abzurufen
  • Wenn Sie Bilder erstellen, können Sie docker build --pull ..... erzwingen, um das in FROM definierte Bild zu ziehen, bevor Sie einen Build starten
  • bei der Nutzung von Diensten; docker service update --force --image foo:bar <servicename> löst die neueste Version des angegebenen foo:bar -Images auf und "pinnt" alle Instanzen des Dienstes an diese Version

Ich hoffe das beantwortet deine Frage. Bitte beachten Sie, dass der GitHub Issue Tracker nicht als allgemeines Support-Forum gedacht ist, sondern zum Melden von Fehlern und Funktionsanfragen. Bei anderen Fragen sollten Sie eine der folgenden Optionen verwenden:

Ich werde dieses Problem schließen, da dies kein Fehler ist, aber Sie können das Gespräch gerne fortsetzen 👍

Es gibt jedoch einen Unterschied zwischen "blind aktualisieren" und der Benachrichtigung, dass das Remote-Image geändert wurde (unter Verwendung desselben Tags), sodass Sie Ihren Build- und QS-Prozess starten können.

Tatsächlich. Ein stabiler Mechanismus, mit dem man Aktualisierungen eines Containers erkennen kann, ohne jeden Tag den gesamten Container erneut herunterzuladen, wäre fantastisch.

Sicherheitsupdates sind äußerst wichtig, und da diese Funktion fehlt, ist es nicht einfacher, auf dem neuesten Stand zu bleiben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen