Verwendung des docker buildx history logs Befehls zum Anzeigen von Build-Logs

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 buildx history logs verwenden, um die Logs Ihrer Docker-Builds anzuzeigen. Sie beginnen mit dem Erstellen eines Docker-Images und untersuchen dessen Verlauf, um den Build-Prozess zu verstehen und die Build-Referenz zu identifizieren.

Anschließend verwenden Sie die Build-Referenz, um die detaillierten Logs eines bestimmten Builds abzurufen und anzuzeigen. Abschließend erkunden Sie, wie Sie diese Build-Logs mit verschiedenen Fortschrittsausgabetypen anzeigen können, was Einblicke in die Build-Ausführung bietet und die Fehlerbehebung erleichtert.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/logs -.-> lab-555052{{"Verwendung des docker buildx history logs Befehls zum Anzeigen von Build-Logs"}} docker/images -.-> lab-555052{{"Verwendung des docker buildx history logs Befehls zum Anzeigen von Build-Logs"}} docker/build -.-> lab-555052{{"Verwendung des docker buildx history logs Befehls zum Anzeigen von Build-Logs"}} end

Ein Image erstellen und dessen Verlauf anzeigen

In diesem Schritt lernen Sie, wie Sie ein Docker-Image aus einer Dockerfile erstellen und dessen Verlauf anzeigen. Der Verlauf zeigt die Schichten, aus denen das Image besteht, sowie die Befehle, die zur Erstellung jeder Schicht verwendet wurden.

Erstellen Sie zunächst eine einfache Dockerfile in Ihrem ~/project-Verzeichnis. Diese Dockerfile erstellt ein Image basierend auf dem ubuntu-Image und installiert das Paket curl.

cd ~/project
nano Dockerfile

Fügen Sie folgenden Inhalt zur Dockerfile hinzu:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl

Speichern Sie die Datei und verlassen Sie den Editor (Strg+X, Y, Enter).

Nun erstellen wir das Docker-Image mit dem Befehl docker build. Wir versehen das Image mit dem Namen my-ubuntu-curl und dem Tag latest. Der . am Ende des Befehls zeigt an, dass sich die Dockerfile im aktuellen Verzeichnis befindet.

docker build -t my-ubuntu-curl:latest .

Sie sehen eine Ausgabe, die den Build-Prozess anzeigt, wobei jeder in der Dockerfile definierte Schritt ausgeführt wird.

Nach Abschluss des Builds können Sie den Verlauf des Images mit dem Befehl docker history anzeigen.

docker history my-ubuntu-curl:latest

Die Ausgabe zeigt eine Tabelle mit Informationen zu jeder Schicht, einschließlich der Schicht-ID, Erstellungszeit, Größe und des verwendeten Befehls. Dieser Verlauf ist nützlich, um zu verstehen, wie ein Image erstellt wurde, und für Debugging-Zwecke.

Den Build-Referenz aus dem Verlauf ermitteln

Im vorherigen Schritt haben Sie ein Docker-Image erstellt und dessen Verlauf angezeigt. Die Verlaufsausgabe enthält eine Spalte "BUILD REFERENCE". Diese Referenz ist ein eindeutiger Identifikator für den Build-Prozess, der das Image erstellt hat. Sie unterscheidet sich von der Image-ID und bezieht sich spezifisch auf den Build-Vorgang selbst, nicht auf die resultierenden Image-Schichten.

Lassen Sie uns den Verlauf erneut betrachten, um die Build-Referenz zu identifizieren.

docker history my-ubuntu-curl:latest

Suchen Sie in der Ausgabe nach der Zeile, die dem Build-Prozess entspricht. Dies ist typischerweise die erste Zeile (abgesehen von den Basis-Image-Schichten) und enthält einen Wert in der Spalte "BUILD REFERENCE". Dieser Wert ist eine lange Zeichenkette.

Beispielsweise könnte die Ausgabe wie folgt aussehen (die genauen Werte variieren):

IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT   BUILD REFERENCE
a1b2c3d4e5f6   2 hours ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
g7h8i9j0k1l2   2 hours ago    /bin/sh -c #(nop) ADD file:abcdef1234567890...   73.9MB
m3n4o5p6q7r8   2 hours ago    /bin/sh -c apt-get update && apt-get install...   30MB      buildkit.dockerfile.v0   buildkit:abcdef1234567890abcdef1234567890

In diesem Beispiel lautet die Build-Referenz buildkit:abcdef1234567890abcdef1234567890. Beachten Sie, dass die Build-Referenz oft mit buildkit: beginnt, gefolgt von einem eindeutigen Identifikator.

Sie benötigen diese Build-Referenz im nächsten Schritt, um die Logs des spezifischen Build-Prozesses anzuzeigen. Kopieren Sie die Build-Referenz aus Ihrer Ausgabe.

Logs eines bestimmten Builds anhand seiner Referenz anzeigen

Im vorherigen Schritt haben Sie die Build-Referenz aus dem Image-Verlauf ermittelt. Diese Build-Referenz ermöglicht es Ihnen, die detaillierten Logs dieses spezifischen Build-Prozesses einzusehen. Dies ist besonders nützlich für die Fehlersuche bei Build-Fehlern oder um die genaue Ausgabe während des Builds nachzuvollziehen.

Um die Logs eines bestimmten Builds anzuzeigen, verwenden Sie den Befehl docker buildx logs gefolgt von der Build-Referenz. Ersetzen Sie dabei YOUR_BUILD_REFERENCE durch die tatsächliche Build-Referenz aus dem vorherigen Schritt.

docker buildx logs YOUR_BUILD_REFERENCE

Wenn Ihre Build-Referenz beispielsweise buildkit:abcdef1234567890abcdef1234567890 lautete, wäre der Befehl:

docker buildx logs buildkit:abcdef1234567890abcdef1234567890

Die Ausführung dieses Befehls zeigt die vollständige Ausgabe des Build-Prozesses an, einschließlich der Ausgabe jeder RUN-Anweisung in Ihrer Dockerfile. Sie sehen die Ausgaben von apt-get update und apt-get install -y curl, so wie sie während des Image-Builds ausgeführt wurden.

Dies bietet eine wesentlich detailliertere Ansicht des Build-Prozesses im Vergleich zur Zusammenfassung, die während des docker build-Befehls angezeigt wird.

Logs mit verschiedenen Fortschrittsausgabe-Typen anzeigen

In diesem Schritt erkunden Sie verschiedene Möglichkeiten, die Fortschrittsausgabe beim Erstellen eines Docker-Images anzuzeigen. Der Befehl docker build bietet mehrere Optionen zur Steuerung der Darstellung des Build-Fortschritts.

Standardmäßig verwendet docker build eine Fortschrittsausgabe, die den Status jedes Schritts während der Ausführung anzeigt. Lassen Sie uns das Image erneut erstellen, um diese Standardausgabe noch einmal zu sehen.

docker build -t my-ubuntu-curl:latest .

Sie werden die bekannte Ausgabe mit Schritten wie "Step 1/2", "Step 2/2" und der Ausgabe des RUN-Befehls beobachten.

Nun probieren wir einen anderen Fortschrittsausgabe-Typ mit dem Flag --progress aus. Der plain-Typ zeigt den Build-Prozess in einem ausführlicheren, zeilenweisen Format an, was hilfreich sein kann, um die exakten Befehle und ihre Ausgaben ohne Fortschrittsbalken zu sehen.

docker build --progress=plain -t my-ubuntu-curl:latest .

Vergleichen Sie die Ausgabe dieses Befehls mit der Standardausgabe. Sie werden ein detaillierteres Protokoll jeder Aktion während des Builds sehen.

Ein weiterer nützlicher Fortschrittsausgabe-Typ ist tty. Dies ist die Standardeinstellung bei interaktivem Bauen in einem Terminal und bietet einen dynamischen Fortschrittsbalken. Die explizite Angabe kann jedoch in bestimmten Scripting-Szenarien nützlich sein.

docker build --progress=tty -t my-ubuntu-curl:latest .

Sie sollten den interaktiven Fortschrittsbalken wieder sehen, ähnlich wie beim ersten Build.

Das Verständnis dieser verschiedenen Fortschrittsausgabe-Typen ermöglicht es Ihnen, die beste Methode zur Überwachung Ihrer Docker-Builds zu wählen, egal ob Sie eine knappe Zusammenfassung oder detaillierte Protokolle zur Fehlersuche benötigen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man ein Docker-Image aus einer Dockerfile erstellt und dessen Verlauf mit den Befehlen docker build und docker history einsehen kann. Sie haben eine einfache Dockerfile erstellt, ein Image mit dem Tag my-ubuntu-curl:latest gebaut und die History-Ausgabe analysiert, um die beteiligten Layer und Befehle des Build-Prozesses zu verstehen.

Anschließend haben Sie gelernt, wie man die eindeutige Build-Referenz aus der docker history-Ausgabe identifiziert. Diese Build-Referenz ist entscheidend für den Zugriff auf spezifische Build-bezogene Informationen, wie z.B. die Build-Logs, die Sie in den folgenden Schritten untersuchen werden.