Verwendung des Befehls docker buildx history inspect attachment zur Untersuchung von Build-Anhängen

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 inspect attachment verwenden, um Anhänge (attachments) zu Docker-Image-Builds zu untersuchen. Sie beginnen mit dem Erstellen eines Docker-Images und dem Anhängen einer Datei mithilfe des Flags --attest.

Nach dem Build erforschen Sie, wie Sie die Build-Historie auflisten, um die Referenz für den Build mit dem Anhang zu identifizieren. Abschließend üben Sie die Untersuchung der angehängten Datei mit der erhaltenen Referenz und verfeinern die Inspektion durch Angabe des Anhangtyps und der Plattform. Diese praktische Übung zeigt, wie Sie eingebettete Metadaten in Ihren Docker-Images zugreifen und verifizieren können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/inspect -.-> lab-555051{{"Verwendung des Befehls docker buildx history inspect attachment zur Untersuchung von Build-Anhängen"}} docker/images -.-> lab-555051{{"Verwendung des Befehls docker buildx history inspect attachment zur Untersuchung von Build-Anhängen"}} docker/build -.-> lab-555051{{"Verwendung des Befehls docker buildx history inspect attachment zur Untersuchung von Build-Anhängen"}} end

Ein Image mit Anhang erstellen

In diesem Schritt lernen Sie, wie man ein Docker-Image baut und Metadaten daran anhängt. Anhänge (attachments) sind eine Möglichkeit, zusätzliche Informationen wie Build-Herkunft (build provenance), Software Bill of Materials (SBOM) oder andere relevante Daten mit dem Image zu verknüpfen.

Erstellen wir zunächst ein einfaches Dockerfile. Navigieren Sie in das Verzeichnis ~/project, falls Sie nicht bereits dort sind.

cd ~/project

Erstellen Sie nun eine Datei namens Dockerfile mit dem nano-Editor.

nano Dockerfile

Fügen Sie folgenden Inhalt zum Dockerfile hinzu:

FROM alpine:latest
CMD ["echo", "Hello, Docker Attachments!"]

Dieses Dockerfile ist sehr einfach. Es verwendet das alpine:latest-Image als Basis und definiert einen Befehl, der beim Start des Containers eine Nachricht ausgibt.

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

Als Nächstes erstellen wir eine Datei, die wir an das Image anhängen werden. Erstellen wir eine einfache Textdatei namens attachment.txt.

nano attachment.txt

Fügen Sie etwas Inhalt zu attachment.txt hinzu, zum Beispiel:

This is an example attachment for the Docker image.
It can contain any relevant metadata.

Speichern Sie die Datei und beenden Sie nano.

Nun bauen wir das Docker-Image und hängen die attachment.txt-Datei an. Wir verwenden den docker build-Befehl mit dem --attest-Flag. Das --attest-Flag ermöglicht es, einen Anhang für den Image-Build anzugeben. Das Format lautet type=typ,dest=ziel,src=quelle.

In unserem Fall verwenden wir type=sbom (Software Bill of Materials) als Typ, dest=/sbom/attachment.txt als Zielpfad innerhalb des Anhangs und src=attachment.txt als Quelldatei auf unserem lokalen Dateisystem. Wir versehen das Image außerdem mit dem Tag my-attached-image:latest.

Stellen Sie vor dem Build sicher, dass das buildx-Plugin installiert ist. Falls nicht, müssen Sie es möglicherweise installieren. Für grundlegende Anhänge sollte jedoch der integrierte Builder ausreichen.

Lassen Sie uns das Image bauen:

docker build -t my-attached-image:latest --attest type=sbom,dest=/sbom/attachment.txt,src=attachment.txt .

Der . am Ende des Befehls gibt den Build-Kontext an, in diesem Fall das aktuelle Verzeichnis (~/project).

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image gebaut und der Anhang verarbeitet wird.

Nach Abschluss des Builds können Sie überprüfen, ob das Image erstellt wurde, indem Sie Ihre lokalen Images auflisten.

docker images

Sie sollten my-attached-image in der Liste sehen.

Build-Historie auflisten, um die Referenz zu finden

Im vorherigen Schritt haben wir ein Docker-Image mit einem Anhang erstellt. Jetzt müssen wir die Referenz zu diesem Anhang finden, um ihn untersuchen zu können. Anhänge sind mit der Build-Historie verknüpft, nicht direkt mit dem finalen Image-Tag.

Wir können den Befehl docker buildx imagetools inspect verwenden, um Informationen über das Image und seine zugehörigen Anhänge anzuzeigen. Dieser Befehl benötigt die Image-Referenz.

Lassen Sie uns das erstellte Image my-attached-image:latest untersuchen:

docker buildx imagetools inspect my-attached-image:latest

Dieser Befehl gibt detaillierte Informationen über das Image-Manifest aus. Suchen Sie im Output nach dem Abschnitt attestations. Dieser Bereich listet die mit dem Image verknüpften Anhänge auf.

Innerhalb des attestations-Abschnitts finden Sie Einträge für jeden Anhang. Jeder Eintrag enthält ein ref-Feld. Diese ref ist die Referenz, die wir benötigen, um den Anhangsinhalt zu untersuchen. Sie sieht etwa so aus: sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

Kopieren Sie den Wert des ref-Feldes für den von Ihnen hinzugefügten Anhang (den mit type=sbom). Dies ist die Referenz, die wir im nächsten Schritt verwenden werden.

Beispielsweise, wenn die Ausgabe folgendes zeigt:

{
  "manifest": {
    ...
  },
  "attestations": [
    {
      "ref": "sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
      "type": "sbom",
      "platform": {
        "architecture": "amd64",
        "os": "linux"
      }
    }
  ]
}

Die benötigte Referenz wäre sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890. Beachten Sie, dass Ihre tatsächliche Referenz anders aussehen wird.

Behalten Sie diese Referenz für den nächsten Schritt griffbereit.

Anhang mit der Referenz untersuchen

Im vorherigen Schritt haben wir die Referenz für den mit unserem Docker-Image verknüpften Anhang mithilfe von docker buildx imagetools inspect ermittelt. Nun werden wir diese Referenz verwenden, um den Inhalt des Anhangs zu überprüfen.

Mit dem Befehl docker buildx attestation inspect können wir die Details eines bestimmten Anhangs anhand seiner Referenz einsehen.

Erinnern Sie sich an die im vorherigen Schritt erhaltene Referenz. Sie sollte im Format sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx vorliegen.

Ersetzen Sie <attachment_reference> durch die tatsächlich kopierte Referenz.

docker buildx attestation inspect <attachment_reference>

Beispiel: Wenn Ihre Referenz sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 lautete, wäre der Befehl:

docker buildx attestation inspect sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

Dieser Befehl gibt den Inhalt des Anhangs aus. Sie sollten den Text sehen, den Sie in Schritt 1 zur attachment.txt-Datei hinzugefügt haben.

Die Ausgabe enthält wahrscheinlich einige Metadaten über den Anhang, gefolgt vom eigentlichen Inhalt. Suchen Sie nach dem Abschnitt mit dem Text "This is an example attachment...".

Dies zeigt, wie Sie den Inhalt eines Anhangs mithilfe seiner eindeutigen Referenz abrufen können. Dies ist nützlich, um die Integrität und den Inhalt der angehängten Daten zu überprüfen.

Anhang durch Angabe von Typ und Plattform untersuchen

Im vorherigen Schritt haben wir einen Anhang über seine direkte Referenz untersucht. Alternativ können Sie Anhänge, die mit einem Image verknüpft sind, auch durch Angabe des Anhangtyps und der Zielplattform untersuchen. Dies ist besonders nützlich, wenn ein Image mehrere Anhänge unterschiedlicher Typen oder für verschiedene Architekturen enthält.

Wir verwenden erneut den Befehl docker buildx attestation inspect, diesmal jedoch mit Angabe der Image-Referenz, des Anhangtyps und der Plattform.

Die Image-Referenz lautet my-attached-image:latest.
Der verwendete Anhangtyp war sbom.
Die Plattform für unseren Build ist typischerweise linux/amd64 in der LabEx-Umgebung.

Das Befehlsformat lautet: docker buildx attestation inspect <image_reference> --type <attachment_type> --platform <platform>.

Lassen Sie uns den Anhang mit dieser Methode untersuchen:

docker buildx attestation inspect my-attached-image:latest --type sbom --platform linux/amd64

Dieser Befehl sollte ebenfalls den Inhalt des Anhangs ausgeben, ähnlich wie im vorherigen Schritt. Dies bestätigt, dass Sie die Anhanginformationen durch Angabe des Images, Typs und der Plattform abrufen können.

Diese Methode ist praktischer, wenn Sie den gesuchten Anhangtyp und die Plattform des Images kennen, da Sie nicht zuerst die spezifische Anhangreferenz mit imagetools inspect ermitteln müssen.

Sie haben nun gelernt, wie Sie:

  1. Ein Docker-Image mit Anhang erstellen
  2. Den Anhang sowohl über seine direkte Referenz als auch durch Angabe von Image, Typ und Plattform untersuchen können.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ein Docker-Image mit einer angehängten Datei erstellt, indem wir den Befehl docker build mit dem Flag --attest verwenden. Dabei haben wir den Anhangtyp, das Zielverzeichnis im Anhang und die Quelldatei angegeben. Anschließend haben wir untersucht, wie man die Build-Historie mit docker buildx history auflistet, um die Referenz für den Build mit dem Anhang zu identifizieren.

Abschließend haben wir geübt, wie man die angehängte Datei mit dem Befehl docker buildx history inspect attachment untersucht - zunächst durch Angabe der Build-Referenz und des Anhangziels, danach zusätzlich durch Spezifikation des Anhangtyps und der Plattform für eine gezieltere Untersuchung. Dieser Prozess hat demonstriert, wie man zusätzliche Metadaten, die mit einem Docker-Image-Build verknüpft sind, einbindet und darauf zugreift.