Verwendung von docker buildx history export zum Exportieren der Build-Historie

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 export verwenden, um Ihre Docker-Build-Historie zu verwalten und zu exportieren. Wir beginnen mit dem Erstellen eines einfachen Docker-Images und untersuchen dessen Build-Historie mit dem Befehl docker history.

Anschließend lernen Sie, wie Sie die Build-Historie eines bestimmten Images in eine Datei exportieren. Abschließend werden wir untersuchen, wie Sie alle Build-Datensätze für einen bestimmten Builder exportieren können, was Ihnen einen umfassenden Überblick über Ihre Build-Aktivitäten bietet. Dieses Lab vermittelt Ihnen die Fähigkeiten, Ihre Docker-Image-Build-Prozesse effektiv nachzuverfolgen und zu verwalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/images -.-> lab-555049{{"Verwendung von docker buildx history export zum Exportieren der Build-Historie"}} docker/build -.-> lab-555049{{"Verwendung von docker buildx history export zum Exportieren der Build-Historie"}} end

Ein einfaches Image erstellen und dessen Historie anzeigen

In diesem Schritt lernen wir, wie man ein einfaches Docker-Image erstellt und dessen Historie einsehen kann. Das Erstellen eines Docker-Images beinhaltet die Erstellung einer Dockerfile - einer Textdatei, die alle Befehle enthält, die ein Benutzer auf der Kommandozeile aufrufen würde, um ein Image zusammenzustellen.

Navigieren Sie zunächst in das Verzeichnis ~/project, falls Sie sich nicht bereits dort befinden.

cd ~/project

Nun erstellen wir eine einfache Dockerfile. Wir legen eine Datei namens Dockerfile im Verzeichnis ~/project an.

nano Dockerfile

Fügen Sie folgenden Inhalt zur Dockerfile hinzu:

FROM ubuntu:latest
RUN echo "Hello, Docker!" > /app/hello.txt
CMD ["cat", "/app/hello.txt"]

Diese Dockerfile bewirkt folgendes:

  • FROM ubuntu:latest: Diese Zeile spezifiziert das Basis-Image für unser neues Image. Wir verwenden die neueste Version des Ubuntu-Images von Docker Hub.
  • RUN echo "Hello, Docker!" > /app/hello.txt: Diese Zeile führt einen Befehl während des Image-Build-Prozesses aus. Sie erstellt ein Verzeichnis /app und schreibt den Text "Hello, Docker!" in eine Datei namens hello.txt in diesem Verzeichnis.
  • CMD ["cat", "/app/hello.txt"]: Diese Zeile spezifiziert den Standardbefehl, der ausgeführt wird, wenn ein Container aus diesem Image gestartet wird. Sie führt den Befehl cat /app/hello.txt aus, der den Inhalt der hello.txt-Datei anzeigt.

Speichern Sie die Datei und beenden Sie den nano-Editor (Drücken Sie Strg + X, dann Y, dann Enter).

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

docker build -t my-hello-image:latest .

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

Nachdem das Image erstellt wurde, können Sie die Historie des Images mit dem Befehl docker history anzeigen. Dieser Befehl zeigt die Schichten (Layers), aus denen das Image besteht, sowie die Befehle, die zur Erstellung jeder Schicht verwendet wurden.

docker history my-hello-image:latest

Die Ausgabe zeigt eine Tabelle mit Informationen zu jeder Schicht, einschließlich der Schicht-ID, des verwendeten Befehls, des Erstellungszeitpunkts und der Größe. Diese Historie ist nützlich, um zu verstehen, wie ein Image erstellt wurde, und um Build-Probleme zu debuggen.

Build-Historie in eine Datei exportieren

Im vorherigen Schritt haben wir die Build-Historie unseres Docker-Images direkt im Terminal eingesehen. In diesem Schritt lernen wir, wie man diese Build-Historie in eine Datei exportiert, um sie später zu analysieren oder zu teilen.

Wir können die Ausgabe des docker history-Befehls mit dem Standard-Umleitungsoperator > in eine Datei umleiten. Lassen Sie uns die Historie des my-hello-image:latest-Images in eine Datei namens history.txt im Verzeichnis ~/project exportieren.

Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden:

cd ~/project

Führen Sie nun folgenden Befehl aus, um die Historie zu exportieren:

docker history my-hello-image:latest > history.txt

Dieser Befehl führt docker history my-hello-image:latest aus und schreibt die Ausgabe statt auf den Bildschirm in die Datei history.txt.

Sie können überprüfen, ob die Datei erstellt wurde und die Build-Historie enthält, indem Sie ihren Inhalt mit dem cat-Befehl anzeigen:

cat history.txt

Sie sollten dieselben Build-Historie-Informationen sehen wie im vorherigen Schritt, nur dass sie jetzt in der Datei history.txt gespeichert sind. Diese Datei kann einfach geteilt oder für Dokumentationszwecke verwendet werden.

Das Exportieren der Build-Historie in eine Datei ist eine nützliche Praxis, um Aufzeichnungen darüber zu führen, wie Ihre Docker-Images erstellt wurden. Dies kann für Debugging, Audits und Zusammenarbeit hilfreich sein.

Alle Build-Aufzeichnungen des Builders exportieren

In den vorherigen Schritten haben wir ein Docker-Image erstellt und dessen Historie exportiert. Docker BuildKit, der standardmäßige Builder für Docker, speichert Aufzeichnungen aller Build-Operationen. In diesem Schritt lernen wir, wie man alle diese Build-Aufzeichnungen exportiert.

Um alle Build-Aufzeichnungen zu exportieren, können wir den Befehl docker buildx build mit dem Flag --metadata-file verwenden. Dieses Flag ermöglicht es uns, eine Datei anzugeben, in der die Build-Metadaten einschließlich der Build-Aufzeichnungen im JSON-Format gespeichert werden.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden:

cd ~/project

Nun bauen wir das Image erneut, aber diesmal exportieren wir die Build-Metadaten in eine Datei namens build-records.json. Wir verwenden dieselbe Dockerfile, die wir im ersten Schritt erstellt haben.

docker buildx build --metadata-file build-records.json -t my-hello-image:latest .

Der Befehl docker buildx build ist Teil des Docker Buildx-Plugins, das erweiterte Build-Funktionen bietet. Das Flag --metadata-file build-records.json weist BuildKit an, die Build-Metadaten in die angegebene Datei zu schreiben.

Nach Abschluss des Builds wird eine Datei namens build-records.json im Verzeichnis ~/project erstellt. Diese Datei enthält detaillierte Informationen über den Build-Prozess im JSON-Format.

Sie können den Inhalt der Datei build-records.json mit dem cat-Befehl anzeigen:

cat build-records.json

Die Ausgabe ist ein JSON-Objekt, das verschiedene Details über den Build enthält, einschließlich Informationen über die Build-Schritte, das resultierende Image und andere Metadaten. Diese umfassende Aufzeichnung kann für erweiterte Analysen, Automatisierung und Integration mit anderen Tools wertvoll sein.

Das Exportieren von Build-Aufzeichnungen bietet im Vergleich zur reinen Image-Historie eine detailliertere Sicht auf den Build-Prozess und gibt Einblicke in die Ausführung jedes Build-Schritts und die beteiligten Abhängigkeiten.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ein einfaches Docker-Image erstellt, indem wir eine Dockerfile mit Anweisungen für den Build-Prozess angelegt haben. Dies beinhaltete die Angabe eines Basis-Images, die Ausführung von Befehlen während des Builds und die Definition eines Standardbefehls für Container. Anschließend haben wir den Befehl docker build verwendet, um das Image zu erstellen und es zur einfachen Identifizierung mit einem Tag zu versehen.

Nach dem Erstellen des Images haben wir untersucht, wie man den Verlauf des Images mit dem Befehl docker history einsehen kann, der Einblicke in die verwendeten Layer und Befehle zur Konstruktion des Images bietet. Das Lab führte uns dann durch den Export der Build-Historie eines bestimmten Images in eine Datei mittels docker buildx history export und anschließend durch den Export aller Build-Aufzeichnungen für den aktuellen Builder, wobei demonstriert wurde, wie Build-Details gespeichert und überprüft werden können.