Wie man den docker node ls-Befehl verwendet, um Swarm-Knoten aufzulisten

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 node ls effektiv nutzen können, um Knoten (Nodes) in einem Docker Swarm zu verwalten und zu untersuchen. Wir beginnen damit, einen Docker Swarm zu initialisieren und alle Knoten aufzulisten.

Anschließend erkunden Sie verschiedene Filteroptionen, um die Knotenliste basierend auf Kriterien wie Knoten-ID, Rolle (Manager oder Worker) und benutzerdefinierten Knotenlabels einzugrenzen. Abschließend lernen Sie, wie Sie die Ausgabe formatieren können, um nur die spezifischen Informationen anzuzeigen, die Sie benötigen. Dies verbessert Ihre Fähigkeit, schnell relevante Knotendetails abzurufen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555182{{"Wie man den docker node ls-Befehl verwendet, um Swarm-Knoten aufzulisten"}} docker/ps -.-> lab-555182{{"Wie man den docker node ls-Befehl verwendet, um Swarm-Knoten aufzulisten"}} docker/inspect -.-> lab-555182{{"Wie man den docker node ls-Befehl verwendet, um Swarm-Knoten aufzulisten"}} end

Auflisten aller Knoten (Nodes) im Swarm

In diesem Schritt lernen wir, wie wir alle Knoten in einem Docker Swarm auflisten können. Bevor wir die Knoten auflisten können, müssen wir einen Docker Swarm initialisieren.

Zunächst initialisieren wir den Swarm auf der aktuellen Maschine. Diese Maschine wird zum Manager-Knoten.

docker swarm init

Sie sollten eine Ausgabe sehen, die anzeigt, dass der Swarm initialisiert wurde und einen Befehl bereitstellt, um andere Knoten dem Swarm beizutreten.

Nachdem der Swarm initialisiert ist, können wir die Knoten im Swarm mit dem Befehl docker node ls auflisten.

docker node ls

Dieser Befehl zeigt eine Tabelle mit Informationen zu den Knoten im Swarm an, einschließlich ihrer ID, des Hostnamens, des Status, der Verfügbarkeit, des Manager-Status und der Engine-Version. Da wir nur einen Knoten haben (den Manager-Knoten, den wir gerade initialisiert haben), sehen Sie einen einzelnen Eintrag in der Liste.

Die Ausgabe sieht in etwa so aus:

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
<node_id> *                   <hostname>          Ready     Active         Leader           20.10.21

Das * neben der ID zeigt an, dass dies der aktuelle Knoten ist, auf dem Sie den Befehl ausführen. Die Spalte MANAGER STATUS zeigt, dass dieser Knoten der Leader des Swarms ist.

Filtern von Knoten (Nodes) nach ID

In diesem Schritt lernen wir, wie wir die Liste der Knoten in einem Docker Swarm basierend auf ihrer ID filtern können. Dies ist nützlich, wenn Sie viele Knoten haben und Informationen über einen bestimmten Knoten anzeigen möchten.

Zunächst listen wir erneut alle Knoten auf, um die ID des Manager-Knotens zu erhalten.

docker node ls

Identifizieren Sie die ID des Knotens aus der Ausgabe. Es wird eine lange Zeichenkette sein.

Jetzt können wir die Option --filter mit dem Schlüssel id verwenden, um die Ausgabe zu filtern und nur den Knoten mit der angegebenen ID anzuzeigen. Ersetzen Sie <node_id> durch die tatsächliche ID, die Sie aus dem vorherigen Befehl erhalten haben.

docker node ls --filter id=<node_id>

Dieser Befehl zeigt nur die Zeile an, die dem Knoten mit der angegebenen ID entspricht. Dies ist eine einfache Möglichkeit, schnell Informationen über einen bestimmten Knoten zu finden, wenn Sie seine ID kennen.

Beispielsweise, wenn Ihre Knoten-ID 24ifihg345h345h345h345h34 ist, würde der Befehl lauten:

docker node ls --filter id=24ifihg345h345h345h345h34

Die Ausgabe wird dieselbe sein wie die einzelne Zeile für Ihren Manager-Knoten aus dem Befehl docker node ls im vorherigen Schritt.

Filtern von Knoten (Nodes) nach Rolle

In diesem Schritt lernen wir, wie wir die Liste der Knoten in einem Docker Swarm basierend auf ihrer Rolle filtern können. In einem Docker Swarm können Knoten eine von zwei Rollen haben: manager oder worker. Manager-Knoten verwalten den Swarm, während Worker-Knoten die Services ausführen.

Da wir derzeit nur einen Knoten in unserem Swarm haben und es sich um den Manager-Knoten handelt, filtern wir, um nur Manager-Knoten anzuzeigen. Wir verwenden die Option --filter mit dem Schlüssel role und dem Wert manager.

docker node ls --filter role=manager

Dieser Befehl zeigt nur die Knoten an, die die Rolle manager haben. In unserer aktuellen Konfiguration wird derselbe einzelne Knoten wie zuvor angezeigt.

Wenn Sie Worker-Knoten in Ihrem Swarm hätten, könnten Sie filtern, um nur Worker-Knoten anzuzeigen, indem Sie Folgendes verwenden:

docker node ls --filter role=worker

Derzeit wird dieser Befehl keine Ausgabe anzeigen, da es keine Worker-Knoten im Swarm gibt.

Das Verständnis, wie man nach Rolle filtert, ist wichtig für die Verwaltung größerer Swarms mit mehreren Manager- und Worker-Knoten.

Filtern von Knoten (Nodes) nach Knoten-Label

In diesem Schritt lernen wir, wie wir Knoten basierend auf den ihnen zugewiesenen Labels filtern können. Knoten-Labels sind Schlüssel-Wert-Paare, die Sie aus organisatorischen Gründen oder zur Steuerung der Service-Platzierung an Knoten anhängen können.

Zunächst fügen wir unserem Manager-Knoten ein Label hinzu. Wir fügen das Label location=datacenter1 hinzu. Dazu verwenden wir den Befehl docker node update, gefolgt von der Knoten-ID und der Option --label-add.

Rufen Sie erneut die Knoten-ID mit docker node ls -q ab:

NODE_ID=$(docker node ls -q)
echo $NODE_ID

Jetzt aktualisieren wir den Knoten mit dem Label:

docker node update --label-add location=datacenter1 $NODE_ID

Sie sollten eine Ausgabe sehen, die die Aktualisierung des Knotens bestätigt.

Um zu überprüfen, ob das Label hinzugefügt wurde, können Sie den Knoten untersuchen:

docker node inspect $NODE_ID

Suchen Sie im Output nach dem Abschnitt Labels. Sie sollten "location": "datacenter1" sehen.

Jetzt filtern wir die Knoten basierend auf diesem Label. Wir verwenden die Option --filter mit dem Schlüssel label und dem Label im Format key=value.

docker node ls --filter label=location=datacenter1

Dieser Befehl zeigt nur die Knoten an, die das Label location mit dem Wert datacenter1 haben. In unserem Fall wird unser Manager-Knoten angezeigt.

Sie können auch nach Knoten filtern, die einen bestimmten Label-Schlüssel haben, unabhängig von seinem Wert, indem Sie einfach den Schlüssel angeben:

docker node ls --filter label=location

Dies zeigt alle Knoten an, für die das Label location definiert ist.

Formatieren der Ausgabe zur Anzeige spezifischer Informationen

In diesem Schritt lernen wir, wie wir die Ausgabe des Befehls docker node ls formatieren können, um nur die Informationen anzuzeigen, die uns interessieren. Dies ist nützlich für Skripte oder wenn Sie nur einen schnellen Überblick über bestimmte Details benötigen.

Wir verwenden die Option --format, um das Ausgabeformat anzugeben. Sie können die Go-Template-Syntax verwenden, um das gewünschte Ausgabeformat zu definieren. Zu den gängigen Feldern, auf die Sie zugreifen können, gehören .ID, .Hostname, .Status, .Availability, .ManagerStatus und .EngineVersion.

Lassen Sie uns nur die Knoten-ID und den Hostnamen anzeigen.

docker node ls --format "{{.ID}}\t{{.Hostname}}"

{{.ID}} und {{.Hostname}} sind Platzhalter für die Knoten-ID bzw. den Hostnamen. Das \t fügt ein Tabulatorzeichen zur Trennung ein.

Die Ausgabe sieht wie folgt aus:

<node_id>	<hostname>

Jetzt lassen Sie uns den Hostnamen und den Manager-Status anzeigen.

docker node ls --format "Hostname: {{.Hostname}}, Manager Status: {{.ManagerStatus}}"

Dies ergibt die folgende Ausgabe:

Hostname: <hostname>, Manager Status: Leader

Sie können Filtern und Formatieren kombinieren. Beispielsweise filtern wir nach Manager-Knoten und zeigen deren ID und Hostnamen an.

docker node ls --filter role=manager --format "{{.ID}}\t{{.Hostname}}"

Dieser Befehl filtert zunächst die Knoten, um nur Manager-Knoten zu berücksichtigen, und formatiert dann die Ausgabe, um deren ID und Hostnamen anzuzeigen.

Die Verwendung der Option --format bietet Flexibilität bei der Anzeige und Verarbeitung von Informationen über Ihre Docker Swarm-Knoten.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man den Befehl docker node ls verwendet, um Informationen über Knoten (Nodes) in einem Docker Swarm zu verwalten und anzuzeigen. Wir haben begonnen, indem wir auf der aktuellen Maschine einen Docker Swarm initialisiert haben, wodurch diese Maschine zum Manager-Knoten wurde. Dann haben wir docker node ls verwendet, um alle Knoten im Swarm aufzulisten und die Standardausgabe zu beobachten, die die ID, den Hostnamen, den Status, die Verfügbarkeit, den Manager-Status und die Engine-Version enthält.

Anschließend haben wir untersucht, wie man die Knotenliste mit der Option --filter filtert. Insbesondere haben wir gelernt, wie man Knoten anhand ihrer eindeutigen ID filtert, sodass wir schnell einen bestimmten Knoten in einem größeren Swarm finden und Informationen darüber anzeigen können. Das Lab behandelt auch das Filtern nach Rolle und Knoten-Label sowie das Formatieren der Ausgabe, um nur spezifische Informationen anzuzeigen, obwohl der bereitgestellte Inhalt nur das Filtern nach ID detailliert beschreibt.