Verwendung des docker buildx ls Befehls zum Auflisten von Builder-Instanzen

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 ls verwenden, um Builder-Instanzen und deren zugehörige Nodes aufzulisten. Sie werden die grundlegende Verwendung des Befehls erkunden, um verfügbare Build-Umgebungen und deren Konfigurationen anzuzeigen.

Darüber hinaus werden Sie entdecken, wie Sie die Ausgabe von docker buildx ls mit Go-Templates formatieren können, um die angezeigten Informationen anzupassen. Dies beinhaltet die Formatierung der Ausgabe, um spezifische Felder anzuzeigen und die Beziehungen zwischen Builder-Instanzen und deren Nodes zu visualisieren.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") subgraph Lab Skills docker/ls -.-> lab-555060{{"Verwendung des docker buildx ls Befehls zum Auflisten von Builder-Instanzen"}} end

Alle Builder-Instanzen und Nodes auflisten

In diesem Schritt lernen Sie, wie Sie alle Builder-Instanzen und Nodes mit dem Befehl docker buildx ls auflisten können. Dieser Befehl ist nützlich, um die verfügbaren Build-Umgebungen und deren Konfigurationen zu verstehen.

Zuerst führen wir den grundlegenden Befehl aus, um die Builder-Instanzen und Nodes aufzulisten.

docker buildx ls

Sie sollten eine ähnliche Ausgabe wie diese sehen:

NAME/NODE       DRIVER/ENDPOINT STATUS  BUILDKIT             PLATFORMS
default         docker
  default       docker          running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x

Die Ausgabe liefert Informationen über die Builder-Instanzen und deren zugehörige Nodes. Die Spalte NAME/NODE zeigt den Namen der Builder-Instanz und den Node innerhalb dieser Instanz. Die Spalte DRIVER/ENDPOINT gibt den verwendeten Treiber und den Endpunkt für den Node an. Die Spalte STATUS zeigt den aktuellen Status des Nodes (z.B. running). Die Spalte BUILDKIT zeigt die BuildKit-Version an. Schließlich listet die Spalte PLATFORMS die unterstützten Plattformen für den Node auf.

In diesem Beispiel sehen wir eine Builder-Instanz namens default mit einem einzelnen Node, der ebenfalls default heißt. Sie verwendet den docker-Treiber und ist aktuell running. Sie unterstützt mehrere Plattformen.

Ausgabe mit Go-Template formatieren

In diesem Schritt lernen Sie, wie Sie die Ausgabe des Befehls docker buildx ls mit einem Go-Template formatieren können. Go-Templates bieten eine flexible Möglichkeit, das Ausgabeformat anzupassen, um nur die benötigten Informationen anzuzeigen.

Mit dem Flag --format können Sie ein Go-Template angeben. Das Template verwendet Platzhalter wie {{.Name}}, {{.Driver}}, {{.Status}} usw., um auf die verschiedenen Felder der Builder-Instanz- und Node-Objekte zuzugreifen.

Lassen Sie uns versuchen, die Ausgabe so zu formatieren, dass nur der Name und der Treiber der Builder-Instanzen und Nodes angezeigt werden.

docker buildx ls --format "{{.Name}}\t{{.Driver}}"

Sie sollten eine ähnliche Ausgabe wie diese sehen:

default docker
default docker

In diesem Template repräsentiert {{.Name}} den Namen des Builders oder Nodes und {{.Driver}} den Treiber. Das \t wird verwendet, um ein Tabulatorzeichen zwischen Name und Treiber einzufügen, was die Lesbarkeit verbessert.

Dies zeigt, wie Sie ein einfaches Go-Template verwenden können, um spezifische Informationen aus der docker buildx ls-Ausgabe zu extrahieren. In den folgenden Schritten werden wir komplexere Templates untersuchen, um die Ausgabe auf verschiedene Arten zu formatieren.

Ausgabe mit spezifischen Feldern formatieren

In diesem Schritt werden wir weiterhin Go-Templates verwenden, um die Ausgabe von docker buildx ls zu formatieren und bestimmte relevante Felder anzuzeigen. Sie können verschiedene Felder der Builder-Instanz- und Node-Objekte auswählen, die in Ihrer benutzerdefinierten Ausgabe enthalten sein sollen.

Lassen Sie uns die Ausgabe so formatieren, dass Name, Status und unterstützte Plattformen für jeden Builder-Node angezeigt werden.

docker buildx ls --format "{{.Name}}\t{{.Status}}\t{{.Platforms}}"

Sie sollten eine ähnliche Ausgabe wie diese sehen:

default running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x
default running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x

In diesem Template:

  • {{.Name}} bezieht sich auf den Namen des Builder-Nodes
  • {{.Status}} zeigt den Status des Builder-Nodes an (z.B. running)
  • {{.Platforms}} listet die unterstützten Plattformen für den Builder-Node auf

Wir verwenden erneut \t, um die Felder durch Tabulatoren zu trennen. Dies ermöglicht Ihnen, schnell den Status und die unterstützten Plattformen für jeden Node einzusehen.

Sie können verschiedene Felder in Ihrem Template nach Bedarf kombinieren. Experimentieren Sie mit weiteren Feldern wie {{.Driver}} oder {{.Buildkit}}, um zu sehen, wie sich die Ausgabe verändert.

Ausgabe zur Darstellung von Builder- und Node-Beziehungen formatieren

In diesem Schritt verwenden wir ein fortgeschritteneres Go-Template, um die Beziehung zwischen Builder-Instanzen und ihren Nodes visuell darzustellen. Dies ist besonders hilfreich, wenn Sie mehrere Builder-Instanzen und Nodes konfiguriert haben.

Wir könnten bedingte Anweisungen und Schleifen innerhalb des Go-Templates verwenden, um dies zu erreichen. Der Einfachheit halber und um uns auf die grundlegende Formatierung zu konzentrieren, erstellen wir jedoch ein Template, das klar zeigt, welcher Node zu welcher Builder-Instanz gehört.

Verwenden wir ein Template, das den Builder-Namen gefolgt von seinen Nodes (mit Einrückung) ausgibt.

docker buildx ls --format "{{range .}}{{if .Builder}}{{.Name}} (Builder){{range .Nodes}}\n  - {{.Name}} (Node){{end}}{{else}}\n{{.Name}} (Node){{end}}{{end}}"

Sie sollten eine ähnliche Ausgabe wie diese sehen:

default (Builder)
  - default (Node)

Lassen Sie uns dieses Template aufschlüsseln:

  • {{range .}}...{{end}}: Durchläuft die Liste der Builder-Instanzen und Nodes.
  • {{if .Builder}}...{{else}}...{{end}}: Prüft, ob das aktuelle Element eine Builder-Instanz ist (.Builder ist true).
  • Falls es ein Builder ist:
    • {{.Name}} (Builder): Gibt den Namen des Builders gefolgt von "(Builder)" aus.
    • {{range .Nodes}}...{{end}}: Durchläuft die Nodes innerhalb des aktuellen Builders.
    • \n - {{.Name}} (Node): Gibt einen Zeilenumbruch, eine Einrückung, "- ", den Node-Namen und "(Node)" aus.
  • Falls es kein Builder ist (d.h. ein eigenständiger Node, was in einfachen Setups seltener vorkommt):
    • \n{{.Name}} (Node): Gibt einen Zeilenumbruch, den Node-Namen und "(Node)" aus.

Dieses Template liefert eine strukturierte Ausgabe, die klar zeigt, welche Nodes mit welchen Builder-Instanzen verknüpft sind. Während dieses Beispiel mit nur einem Builder und einem Node einfach ist, wird dieses Template nützlicher, wenn Sie eine komplexere buildx-Konfiguration haben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker buildx ls verwenden, um Builder-Instanzen und deren zugehörige Nodes aufzulisten. Sie begannen mit der Ausführung des grundlegenden Befehls, um die Standardausgabe zu sehen, die Details wie Builder-Name, Node-Name, Treiber (Driver), Status, BuildKit-Version und unterstützte Plattformen enthält.

Darüber hinaus haben Sie untersucht, wie Sie die Ausgabe mit einem Go-Template über das Flag --format formatieren können. Dies ermöglicht es Ihnen, die angezeigten Informationen anzupassen, indem Sie Platzhalter für verschiedene Felder angeben. So können Sie gezielt nur die relevanten Daten Ihrer Builder-Instanzen und Nodes extrahieren und darstellen.