Wie man den docker node ps-Befehl verwendet, um Aufgaben 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 erfahren Sie, wie Sie den Befehl docker node ps verwenden, um die auf einem Docker Swarm-Knoten laufenden Aufgaben aufzulisten und zu filtern. Sie beginnen damit, einen Docker Swarm zu initialisieren und einen einfachen Dienst zu erstellen, um Aufgaben zu generieren.

Anschließend werden Sie untersuchen, wie Sie alle Aufgaben auf einem bestimmten Knoten auflisten, Aufgaben anhand ihres Namens und des gewünschten Zustands filtern und schließlich die Ausgabe der Aufgabenliste formatieren, um die Lesbarkeit zu verbessern und Informationen besser extrahieren zu können. Diese praktische Erfahrung vermittelt Ihnen die Fähigkeiten, um Aufgaben in Ihrem Docker Swarm-Cluster zu überwachen und zu verwalten.


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/rm("Remove Container") subgraph Lab Skills docker/ls -.-> lab-555184{{"Wie man den docker node ps-Befehl verwendet, um Aufgaben aufzulisten"}} docker/ps -.-> lab-555184{{"Wie man den docker node ps-Befehl verwendet, um Aufgaben aufzulisten"}} docker/rm -.-> lab-555184{{"Wie man den docker node ps-Befehl verwendet, um Aufgaben aufzulisten"}} end

Auflisten aller Aufgaben auf einem Knoten

In diesem Schritt erfahren Sie, wie Sie alle auf einem Docker Swarm-Knoten laufenden Aufgaben auflisten können. Docker Swarm ist ein Container-Orchestrierungstool, mit dem Sie einen Cluster von Docker-Knoten verwalten können. Eine Aufgabe ist eine laufende Instanz eines Dienstes.

Bevor wir die Aufgaben auflisten, müssen wir einen laufenden Docker Swarm-Dienst haben. In diesem Lab verwenden wir einen einfachen nginx-Dienst.

Zunächst initialisieren wir einen Docker Swarm auf diesem Knoten.

docker swarm init

Sie sollten eine Ausgabe sehen, die anzeigt, dass der Swarm initialisiert wurde und ein Join-Token bereitstellt.

Jetzt erstellen wir einen einfachen Dienst namens my-nginx-service mit dem nginx-Image. Wir laden zunächst das nginx-Image herunter, um sicherzustellen, dass es verfügbar ist.

docker pull nginx:latest
docker service create --name my-nginx-service --replicas 1 nginx

Der Befehl docker service create erstellt einen neuen Dienst mit einer Replik (einer Aufgabe). Docker lädt automatisch das nginx-Image herunter, wenn es noch nicht vorhanden ist, aber wir haben es zuvor explizit heruntergeladen.

Nachdem der Dienst erstellt wurde, startet Docker eine Aufgabe für diesen Dienst auf einem der Knoten im Swarm (in diesem Fall auf dem aktuellen Knoten).

Um alle auf dem Knoten laufenden Aufgaben aufzulisten, können Sie den Befehl docker node ps gefolgt von der Knoten-ID oder dem Hostnamen verwenden. Da wir auf dem Manager-Knoten sind, auf dem der Dienst erstellt wurde, können wir die Knoten-ID dieses Knotens verwenden.

Um die Knoten-ID zu finden, können Sie den Befehl docker node ls verwenden.

docker node ls

Dieser Befehl listet alle Knoten im Swarm auf. Die Ausgabe zeigt die Knoten-ID, den Hostnamen, den Status, die Verfügbarkeit und den Manager-Status. Kopieren Sie die Knoten-ID des aktuellen Knotens (derjenige mit Leader unter MANAGER STATUS).

Verwenden Sie jetzt den Befehl docker node ps mit der kopierten Knoten-ID, um die Aufgaben auf diesem Knoten aufzulisten. Ersetzen Sie <node_id> durch die tatsächliche Knoten-ID.

docker node ps <node_id>

Dieser Befehl zeigt eine Liste der auf dem angegebenen Knoten laufenden Aufgaben an, einschließlich der Aufgaben-ID, des Dienstnamens, des Images, des Knotens, des gewünschten Zustands, des aktuellen Zustands und des Fehlers. Sie sollten die Aufgabe my-nginx-service.1 mit dem Zustand Running in der Liste sehen.

Alternativ können Sie alle Aufgaben im Swarm mit dem Befehl docker task ls auflisten. Dieser Befehl ist nützlich, um Aufgaben auf allen Knoten im Swarm zu sehen.

docker task ls

Dieser Befehl zeigt ähnliche Informationen wie docker node ps, listet jedoch die Aufgaben von allen Knoten im Swarm auf. Da wir nur einen Knoten und eine Aufgabe haben, wird die Ausgabe ähnlich wie bei docker node ps sein.

In diesem Schritt haben Sie gelernt, wie Sie Aufgaben auf einem bestimmten Knoten mit docker node ps und alle Aufgaben im Swarm mit docker task ls auflisten können.

Filtern von Aufgaben nach Name

In diesem Schritt erfahren Sie, wie Sie die Liste der Aufgaben nach ihrem Namen filtern können. Dies ist nützlich, wenn viele Dienste und Aufgaben laufen und Sie nur die Aufgaben sehen möchten, die einem bestimmten Dienst zugeordnet sind.

Wir werden weiterhin den im vorherigen Schritt erstellten my-nginx-service verwenden.

Um Aufgaben nach Name zu filtern, können Sie die Option --filter mit dem Schlüssel name im Befehl docker task ls verwenden. Die Syntax lautet --filter name=<service_name>.

Filtern wir die Aufgaben, um nur diejenigen anzuzeigen, die dem my-nginx-service gehören.

docker task ls --filter name=my-nginx-service

Dieser Befehl listet nur die Aufgaben auf, deren Dienstname my-nginx-service ist. Sie sollten die Aufgabe my-nginx-service.1 in der Liste sehen.

Sie können auch nach dem vollständigen Aufgabennamen filtern, der den Dienstnamen und die Aufgabennummer enthält (z. B. my-nginx-service.1).

docker task ls --filter name=my-nginx-service.1

Dieser Befehl listet speziell die Aufgabe mit dem genauen Namen my-nginx-service.1 auf.

Wenn Sie mehrere Dienste laufen hätten, würde das Filtern nach Dienstname alle Aufgaben für diesen Dienst anzeigen. Beispielsweise würde das Ausführen von docker task ls --filter name=my-app-service alle Aufgaben für den my-app-service anzeigen, wenn Sie einen solchen Dienst hätten.

Das Filtern nach Name ist eine leistungsstarke Methode, um die Ausgabe des Befehls docker task ls einzugrenzen und sich auf die Aufgaben zu konzentrieren, die Sie interessieren.

Filtern von Aufgaben nach gewünschtem Zustand

In diesem Schritt erfahren Sie, wie Sie die Liste der Aufgaben basierend auf ihrem gewünschten Zustand filtern können. Der gewünschte Zustand einer Aufgabe ist der Zustand, in dem der Docker Swarm-Manager die Aufgabe haben möchte (z. B. Running (Laufend), Shutdown (Herunterfahren), Accepted (Akzeptiert)).

Wir werden weiterhin den in den vorherigen Schritten erstellten my-nginx-service verwenden. Derzeit ist der gewünschte Zustand der Aufgabe für diesen Dienst Running.

Um Aufgaben nach gewünschtem Zustand zu filtern, können Sie die Option --filter mit dem Schlüssel desired-state im Befehl docker task ls verwenden. Die Syntax lautet --filter desired-state=<state>.

Filtern wir die Aufgaben, um nur diejenigen anzuzeigen, deren gewünschter Zustand Running ist.

docker task ls --filter desired-state=Running

Dieser Befehl listet nur die Aufgaben auf, deren gewünschter Zustand Running ist. Sie sollten die Aufgabe my-nginx-service.1 in der Liste sehen.

Jetzt skalieren wir den Dienst auf 0 Repliken herunter. Dadurch wird der gewünschte Zustand der vorhandenen Aufgabe auf Shutdown geändert.

docker service scale my-nginx-service=0

Nach dem Herunterskalieren wird die Aufgabe schließlich in den Zustand Shutdown wechseln. Es kann ein paar Momente dauern, bis der Zustand aktualisiert wird.

Jetzt filtern wir die Aufgaben, um diejenigen anzuzeigen, deren gewünschter Zustand Shutdown ist.

docker task ls --filter desired-state=Shutdown

Sie sollten jetzt die Aufgabe my-nginx-service.1 mit dem gewünschten Zustand Shutdown in der Liste sehen.

Andere mögliche gewünschte Zustände sind Accepted (wenn eine Aufgabe von einem Worker-Knoten akzeptiert wurde, aber noch nicht läuft) und Failed (wenn eine Aufgabe nicht gestartet werden konnte).

Das Filtern nach gewünschtem Zustand ist nützlich, um den Status Ihrer Dienste zu überwachen und Aufgaben zu identifizieren, die sich nicht im erwarteten Zustand befinden.

Formatieren der Ausgabe von Aufgaben

In diesem Schritt erfahren Sie, wie Sie die Ausgabe des Befehls docker task ls formatieren können, um spezifische Informationen in einem benutzerdefinierten Format anzuzeigen. Dies ist nützlich für Skripte oder das Generieren von Berichten.

Wir werden weiterhin den my-nginx-service und seine Aufgabe verwenden.

Um die Ausgabe zu formatieren, können Sie die Option --format mit einem Go-Template-String verwenden. Der Template-String ermöglicht es Ihnen, anzugeben, welche Felder angezeigt werden sollen und wie sie formatiert werden sollen.

Zeigen wir nur die Aufgaben-ID, den Dienstnamen und den aktuellen Zustand der Aufgaben an.

docker task ls --format "{{.ID}}\t{{.Service}}\t{{.CurrentState}}"

In diesem Befehl:

  • {{.ID}} bezieht sich auf die Aufgaben-ID.
  • {{.Service}} bezieht sich auf den Dienstnamen.
  • {{.CurrentState}} bezieht sich auf den aktuellen Zustand der Aufgabe.
  • \t wird verwendet, um ein Tabulatorzeichen zwischen den Feldern einzufügen, um die Lesbarkeit zu verbessern.

Die Ausgabe zeigt die Aufgaben-ID, den Dienstnamen und den aktuellen Zustand für jede Aufgabe an.

Sie können auch das table-Format verwenden, um die Ausgabe in einer Tabelle mit bestimmten Spalten anzuzeigen.

docker task ls --format "table {{.ID}}\t{{.Service}}\t{{.CurrentState}}\t{{.Node}}"

Dieser Befehl zeigt eine Tabelle mit Spalten für Aufgaben-ID, Dienst, aktueller Zustand und Knoten an.

Um alle verfügbaren Felder zu sehen, die Sie im Format-String verwenden können, können Sie eine Aufgabe mit dem Befehl docker task inspect untersuchen und sich die JSON-Ausgabe ansehen. Einige häufige Felder sind:

  • .ID: Aufgaben-ID
  • .Service: Dienstname
  • .Image: Imagename
  • .Node: Knoten-Hostname
  • .DesiredState: Gewünschter Zustand der Aufgabe
  • .CurrentState: Aktueller Zustand der Aufgabe
  • .Error: Fehlermeldung, wenn die Aufgabe fehlgeschlagen ist
  • .CreatedAt: Zeitstempel, wann die Aufgabe erstellt wurde
  • .UpdatedAt: Zeitstempel, wann die Aufgabe zuletzt aktualisiert wurde

Zeigen wir die Aufgaben-ID, das Image und den Knoten, auf dem die Aufgabe läuft, an.

docker task ls --format "{{.ID}}\t{{.Image}}\t{{.Node}}"

Dieser Befehl zeigt die Aufgaben-ID, das von der Aufgabe verwendete Image und den Knoten, auf dem die Aufgabe läuft, an.

Das Formatieren der Ausgabe ermöglicht es Ihnen, die von docker task ls angezeigten Informationen an Ihre Bedürfnisse anzupassen, sei es für eine schnelle Inspektion oder für die Verwendung in Skripten.

Abschließend bereinigen wir den von uns erstellten Dienst.

docker service rm my-nginx-service

Dieser Befehl entfernt den Dienst und seine zugehörigen Aufgaben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker node ps verwenden können, um die auf einem bestimmten Docker Swarm-Knoten laufenden Aufgaben aufzulisten. Sie haben zunächst einen Docker Swarm initialisiert und einen einfachen nginx-Dienst mit einer Replik erstellt. Anschließend haben Sie docker node ls verwendet, um die Knoten-ID des aktuellen Manager-Knotens zu ermitteln und danach docker node ps <node_id> verwendet, um alle auf diesem Knoten laufenden Aufgaben anzuzeigen.

Das Lab hat auch behandelt, wie Sie die Ausgabe von docker node ps verbessern können, indem Sie Aufgaben basierend auf ihrem Namen und gewünschten Zustand filtern und wie Sie die Ausgabe für eine bessere Lesbarkeit formatieren. Diese Schritte zeigen die Flexibilität des Befehls docker node ps für die Überwachung und Verwaltung von Aufgaben in einem Docker Swarm-Cluster.