Verwendung des docker image history Befehls zur Untersuchung von Image-Layern

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker history verwenden, um die Ebenen (Layers) eines Docker-Images zu untersuchen. Das Verständnis von Image-Ebenen und deren Erstellungsbefehlen ist entscheidend für die Fehlerbehebung und Optimierung Ihrer Docker-Images.

Sie beginnen mit der Anzeige der grundlegenden Historie eines Images, erkunden dann Optionen zum Deaktivieren der Ausgabekürzung für vollständige Befehlsübersicht und verwenden den Quiet-Modus für eine kompakte Ansicht. Darüber hinaus lernen Sie, wie Sie die Historie-Ausgabe mit Go-Templates für individuelle Berichte formatieren und wie Sie die Historie für Images anzeigen, die für bestimmte Plattformen erstellt wurden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/inspect -.-> lab-555153{{"Verwendung des docker image history Befehls zur Untersuchung von Image-Layern"}} docker/pull -.-> lab-555153{{"Verwendung des docker image history Befehls zur Untersuchung von Image-Layern"}} docker/images -.-> lab-555153{{"Verwendung des docker image history Befehls zur Untersuchung von Image-Layern"}} end

Historie eines Docker-Images anzeigen

In diesem Schritt lernen Sie, wie Sie die Historie eines Docker-Images einsehen können. Die Historie eines Images zeigt die Ebenen (Layers), aus denen das Image besteht, sowie die Befehle, die zur Erstellung jeder Ebene verwendet wurden. Dies ist nützlich, um den Aufbau eines Images nachzuvollziehen und Probleme zu debuggen.

Zuerst laden wir ein Docker-Image herunter, das wir untersuchen können. Für dieses Beispiel verwenden wir das ubuntu-Image.

docker pull ubuntu

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird. Sobald der Download abgeschlossen ist, können Sie die Historie des Images mit dem Befehl docker history gefolgt vom Image-Namen oder der ID anzeigen.

docker history ubuntu

Die Ausgabe des docker history-Befehls zeigt eine Tabelle mit mehreren Spalten:

  • IMAGE: Die ID der Image-Ebene.
  • CREATED: Der Zeitpunkt, zu dem die Ebene erstellt wurde.
  • CREATED BY: Der Befehl, der zur Erstellung der Ebene verwendet wurde.
  • SIZE: Die Größe der Ebene.
  • COMMENT: Ein eventuell vorhandener Kommentar zur Ebene.

Diese Historie ermöglicht es Ihnen, die Schritte nachzuvollziehen, die zum Erstellen des ubuntu-Images durchgeführt wurden, und zeigt jeden ausgeführten Befehl sowie die resultierende Ebene an.

Historie mit deaktivierter Ausgabekürzung anzeigen

Im vorherigen Schritt haben Sie die Historie des ubuntu-Images betrachtet. Dabei ist Ihnen möglicherweise aufgefallen, dass Teile der Ausgabe, insbesondere die Befehle in der Spalte CREATED BY, gekürzt wurden. Dies ist das Standardverhalten von docker history, um die Ausgabe kompakt zu halten.

Um die vollständige Ausgabe ohne Kürzungen anzuzeigen, können Sie das Flag --no-trunc mit dem Befehl docker history verwenden.

Probieren wir dies mit dem ubuntu-Image aus.

docker history --no-trunc ubuntu

Jetzt sollten Sie die vollständigen Befehle sehen, die zur Erstellung jeder Ebene des ubuntu-Images verwendet wurden. Dies kann besonders hilfreich sein, wenn Sie die genauen Details zum Aufbau einer Ebene benötigen, insbesondere bei komplexen Images mit langen Build-Befehlen.

Vergleichen Sie die Ausgabe dieses Befehls mit der Ausgabe aus dem vorherigen Schritt, um den Unterschied in der Spalte CREATED BY zu erkennen.

Historie mit komprimierter Ausgabe anzeigen

In den vorherigen Schritten haben Sie die detaillierte Historie des ubuntu-Images gesehen, einschließlich der Befehle zur Erstellung jeder Ebene. Manchmal benötigen Sie jedoch nur die Image-IDs der Ebenen ohne weitere Informationen.

Um eine komprimierte Ausgabe anzuzeigen, die nur die Image-IDs enthält, können Sie das Flag -q oder --quiet mit dem docker history-Befehl verwenden.

Lassen Sie uns die Historie des ubuntu-Images im komprimierten Modus anzeigen.

docker history -q ubuntu

Die Ausgabe zeigt nun nur die Image-IDs der Ebenen, jeweils eine pro Zeile. Dies ist nützlich, wenn Sie schnell eine Liste von Layer-IDs für Skripte oder andere Zwecke benötigen.

Vergleichen Sie diese Ausgabe mit den vorherigen, um zu sehen, wie das -q-Flag die angezeigten Informationen vereinfacht.

Historie-Ausgabe mit Go-Template formatieren

Neben den Standard- und komprimierten Ausgabeformaten ermöglicht docker history die Formatierung der Ausgabe mittels Go-Templates. Dies gibt Ihnen präzise Kontrolle darüber, welche Informationen angezeigt werden und wie sie dargestellt werden.

Das Flag --format wird verwendet, um das Go-Template anzugeben. Sie können auf verschiedene Felder der Image-Historie mit Template-Syntax zugreifen. Zu den gängigen Feldern gehören .ID, .Created, .CreatedBy, .Size und .Comment.

Lassen Sie uns die Ausgabe formatieren, um nur die Image-ID und den Befehl zur Erstellung der Ebene anzuzeigen, getrennt durch einen Tab.

docker history --format "{{.ID}}\t{{.CreatedBy}}" ubuntu

In diesem Template:

  • {{.ID}} bezieht sich auf die Image-ID der Ebene
  • \t ist ein Tabulatorzeichen zur Trennung
  • {{.CreatedBy}} bezieht sich auf den Befehl zur Erstellung der Ebene

Sie können mit verschiedenen Feldern und Formatierungen experimentieren, um die gewünschte Ausgabe zu erhalten. Zum Beispiel, um die Größe einzubeziehen:

docker history --format "{{.ID}}\t{{.Size}}\t{{.CreatedBy}}" ubuntu

Die Verwendung von Go-Templates bietet eine leistungsfähige Möglichkeit, spezifische Informationen aus der Image-Historie für Skripte oder Berichtszwecke zu extrahieren.

Historie für eine spezifische Plattform anzeigen

Docker-Images können für verschiedene Architekturen und Betriebssysteme erstellt werden. Wenn ein Image für mehrere Plattformen verfügbar ist, möchten Sie möglicherweise die Historie für eine bestimmte Plattform einsehen.

Der Befehl docker history ermöglicht es Ihnen, die Zielplattform mit dem Flag --platform anzugeben. Das Format für die Plattform lautet typischerweise os/architecture. Beispiele hierfür sind linux/amd64 oder linux/arm64.

Lassen Sie uns die Historie des ubuntu-Images speziell für die Plattform linux/amd64 anzeigen.

docker history --platform linux/amd64 ubuntu

Die Ausgabe zeigt die Historie des ubuntu-Images, das für die linux/amd64-Architektur erstellt wurde. Falls das Image für die angegebene Plattform nicht verfügbar ist, wird möglicherweise ein Fehler angezeigt oder eine abweichende Historie, abhängig davon, wie das Image erstellt wurde.

Dies ist besonders nützlich, wenn Sie mit Multi-Architektur-Images arbeiten und den Build-Prozess für eine bestimmte Zielumgebung untersuchen müssen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker history verwenden, um die Layer eines Docker-Images zu untersuchen. Sie begannen damit, das ubuntu-Image zu pullen und dessen Historie anzuzeigen, die Informationen zu jedem Layer enthält, einschließlich der Image-ID, Erstellungszeit, des verwendeten Befehls und der Größe. Dies bietet einen klaren Einblick in den Build-Prozess des Images.

Anschließend haben Sie Optionen zur Anpassung der Ausgabe von docker history erkundet. Sie haben gelernt, wie Sie die Ausgabeabkürzung mit dem Flag --no-trunc deaktivieren, um die vollständigen Befehle zur Erstellung jedes Layers einzusehen. Dies ist entscheidend, um die genauen Schritte der Image-Erstellung zu verstehen. Das Lab behandelt auch die Anzeige der Historie mit komprimierter Ausgabe über das -q-Flag, das nur Image-IDs anzeigt, die Formatierung der Ausgabe mit einer Go-Template für individuelle Ansichten sowie die Anzeige der Historie für eine bestimmte Plattform mit dem --platform-Flag.