Wie man den docker service ps-Befehl verwendet, um Service-Aufgaben (Tasks) 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 service ps effektiv nutzen können, um Aufgaben (Tasks) innerhalb eines Docker Swarm-Services zu untersuchen und zu verwalten. Sie beginnen damit, die grundlegenden Informationen der mit einem Service verknüpften Aufgaben aufzulisten und die wichtigsten Details, die in der Standardausgabe enthalten sind, zu verstehen.

Basierend auf der grundlegenden Auflistung werden Sie dann untersuchen, wie Sie die vollständigen Details der Service-Aufgaben abrufen können, indem Sie die Option --no-trunc verwenden, um umfassende Informationen zu erhalten. Das Lab wird Sie weiterhin darauf hinweisen, wie Sie Aufgaben basierend auf verschiedenen Kriterien wie Name, dem Knoten (Node), auf dem sie ausgeführt werden, und ihrem gewünschten Zustand filtern können, sodass Sie bestimmte Aufgaben genau ausfindig machen können. Abschließend lernen Sie, wie Sie die Ausgabe des Befehls docker service ps formatieren können, um die angezeigten Informationen nach Ihren Bedürfnissen anzupassen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ps -.-> lab-555228{{"Wie man den docker service ps-Befehl verwendet, um Service-Aufgaben (Tasks) aufzulisten"}} docker/rm -.-> lab-555228{{"Wie man den docker service ps-Befehl verwendet, um Service-Aufgaben (Tasks) aufzulisten"}} docker/create -.-> lab-555228{{"Wie man den docker service ps-Befehl verwendet, um Service-Aufgaben (Tasks) aufzulisten"}} end

Auflisten der Aufgaben (Tasks) eines Services

In diesem Schritt lernen Sie, wie Sie die mit einem bestimmten Service in einem Docker Swarm verknüpften Aufgaben auflisten können. Aufgaben sind die grundlegenden Einheiten der Planung (Scheduling) in Swarm und stellen eine laufende Instanz eines Services dar.

Zunächst stellen wir sicher, dass Sie einen laufenden Service haben. Wir werden einen einfachen Service mithilfe des nginx-Images erstellen.

docker service create --name my-nginx nginx

Dieser Befehl erstellt einen Service namens my-nginx mithilfe des nginx-Images. Docker Swarm wird automatisch Aufgaben für diesen Service erstellen und verwalten.

Nun, um die Aufgaben für den my-nginx-Service aufzulisten, können Sie den Befehl docker service ps gefolgt vom Service-Namen verwenden.

docker service ps my-nginx

Sie sollten eine Ausgabe ähnlich dieser sehen, die die mit Ihrem Service verknüpften Aufgaben anzeigt:

ID             NAME         IMAGE          NODE         DESIRED STATE   CURRENT STATE           ERROR   PORTS
<task_id>      my-nginx.1   nginx:latest   <node_name>   Running         Running 5 seconds ago

Die Ausgabe liefert Informationen zu jeder Aufgabe, einschließlich ihrer ID, ihres Namens, des verwendeten Images, des Knotens (Node), auf dem sie ausgeführt wird, ihres gewünschten Zustands und ihres aktuellen Zustands.

Auflisten von Aufgaben (Tasks) mit vollständigen Details

Im vorherigen Schritt haben Sie gelernt, wie Sie die grundlegenden Informationen zu den Aufgaben eines Services auflisten können. Manchmal benötigen Sie detailliertere Informationen zu jeder Aufgabe, wie z. B. die vollständige Aufgaben-ID, die Container-ID und mehr.

Um die vollständigen Details der Aufgaben zu erhalten, können Sie die Option --no-trunc mit dem Befehl docker service ps verwenden. Diese Option verhindert, dass Docker die Ausgabe kürzt und zeigt die vollständigen IDs und andere Informationen an.

Lassen Sie uns die Aufgaben für den my-nginx-Service mit vollständigen Details auflisten:

docker service ps --no-trunc my-nginx

Sie werden eine Ausgabe ähnlich dem vorherigen Schritt sehen, aber mit der vollständigen Aufgaben-ID und möglicherweise detaillierteren Informationen, abhängig vom Zustand und der Konfiguration der Aufgabe.

ID                                                           NAME         IMAGE          NODE         DESIRED STATE   CURRENT STATE            ERROR   PORTS
<full_task_id>                                               my-nginx.1   nginx:latest   <node_name>   Running         Running 10 seconds ago

Im Vergleich zur Ausgabe des vorherigen Schritts können Sie die vollständige Aufgaben-ID anstelle einer gekürzten Version sehen. Dies ist nützlich, wenn Sie genau auf eine bestimmte Aufgabe verweisen müssen, beispielsweise wenn Sie eine Aufgabe untersuchen.

Filtern von Aufgaben (Tasks) nach Name oder Knoten (Node)

In einem größeren Swarm-Cluster können viele Aufgaben auf mehreren Knoten laufen. Um bestimmte Aufgaben zu finden, können Sie die Ausgabe von docker service ps anhand verschiedener Kriterien filtern, wie z. B. dem Aufgaben-Namen oder dem Knoten, auf dem die Aufgabe ausgeführt wird.

Die Option --filter wird zum Filtern verwendet. Die grundlegende Syntax lautet --filter "key=value".

Um Aufgaben nach Name zu filtern, können Sie den Schlüssel name verwenden. Beispielsweise können Sie die folgenden Aufgaben finden, deren Name mit my-nginx beginnt:

docker service ps --filter "name=my-nginx.1" my-nginx

Dieser Befehl zeigt nur die Aufgabe namens my-nginx.1 für den my-nginx-Service an. Beachten Sie, dass Aufgaben-Namen typischerweise im Format service_name.task_number vorliegen.

Um Aufgaben nach dem Knoten, auf dem sie laufen, zu filtern, können Sie den Schlüssel node verwenden. Zunächst müssen Sie den Namen des Knotens kennen, auf dem Ihre Aufgabe ausgeführt wird. Sie können diesen aus der Ausgabe von docker service ps erhalten. Nehmen wir an, der Name Ihres Knotens ist labex-node.

docker service ps --filter "node=labex-node" my-nginx

Dieser Befehl zeigt die Aufgaben für den my-nginx-Service an, die auf dem Knoten namens labex-node laufen. Ersetzen Sie labex-node durch den tatsächlichen Namen Ihres Knotens, wenn dieser unterschiedlich ist.

Sie können Filter kombinieren, indem Sie mehrere --filter-Optionen verwenden.

Filtern von Aufgaben (Tasks) nach gewünschtem Zustand

Neben dem Filtern nach Name oder Knoten können Sie auch Aufgaben anhand ihres gewünschten Zustands filtern. Der gewünschte Zustand gibt an, in welchem Zustand der Swarm-Manager die Aufgabe haben möchte (z. B. Running (Laufend), Shutdown (Heruntergefahren), Rejected (Abgelehnt)).

Um Aufgaben nach gewünschtem Zustand zu filtern, verwenden Sie die Option --filter mit dem Schlüssel desired-state.

Beispielsweise können Sie nur die Aufgaben auflisten, die derzeit für den my-nginx-Service im Zustand Running sein sollen:

docker service ps --filter "desired-state=running" my-nginx

Da unser my-nginx-Service läuft, wird dieser Befehl die aktiven Aufgaben anzeigen.

Wenn Sie Aufgaben sehen möchten, die heruntergefahren wurden, können Sie folgendes verwenden:

docker service ps --filter "desired-state=shutdown" my-nginx

Derzeit zeigt dieser Befehl möglicherweise keine Ausgabe an, es sei denn, Sie haben Aufgaben skaliert oder entfernt.

Sie können auch nach Aufgaben filtern, die Rejected wurden. Dieser Zustand zeigt an, dass der Swarm-Manager die Aufgabe nicht starten konnte.

docker service ps --filter "desired-state=rejected" my-nginx

Das Verständnis der gewünschten Zustände ist entscheidend für die Überwachung der Gesundheit und des Status Ihrer Services in einem Swarm.

Formatieren der Ausgabe von Service-Aufgaben (Tasks)

In diesem letzten Schritt lernen Sie, wie Sie das Ausgabeformat des Befehls docker service ps anpassen können. Dies ist nützlich, wenn Sie bestimmte Informationen extrahieren oder die Ausgabe mit anderen Tools integrieren möchten.

Die Option --format ermöglicht es Ihnen, eine Go-Vorlage (Go template) anzugeben, um die Ausgabe zu formatieren. Sie können Platzhalter wie .ID, .Name, .Image, .Node, .DesiredState, .CurrentState, .Error und .Ports verwenden, um die entsprechenden Aufgabenattribute anzuzeigen.

Beispielsweise können Sie nur die Aufgaben-ID, den Namen und das Image in Tabellenformat anzeigen:

docker service ps --format "table {{.ID}}\t{{.Name}}\t{{.Image}}" my-nginx

Dieser Befehl erzeugt eine Ausgabe ähnlich der folgenden:

ID             NAME         IMAGE
<task_id>      my-nginx.1   nginx:latest

Sie können die Ausgabe auch als Werteliste formatieren, was für Skripte nützlich ist. Beispielsweise können Sie nur die Aufgaben-IDs abrufen:

docker service ps --format "{{.ID}}" my-nginx

Dies gibt nur die Aufgaben-ID(s) aus.

Probieren wir ein anderes Format aus, bei dem der Aufgabenname und der Knoten, auf dem er läuft, angezeigt werden:

docker service ps --format "Task: {{.Name}} is running on node: {{.Node}}" my-nginx

Die Ausgabe sieht dann so aus:

Task: my-nginx.1 is running on node: <node_name>

Experimentieren Sie mit verschiedenen Platzhaltern und Formatierungsoptionen, um die gewünschte Ausgabe zu erhalten.

Abschließend bereinigen wir den von uns erstellten Service:

docker service rm my-nginx

Dieser Befehl entfernt den my-nginx-Service und seine zugehörigen Aufgaben.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker service ps verwenden, um die Aufgaben (Tasks) aufzulisten, die einem Docker Swarm-Service zugeordnet sind. Sie haben zunächst einen einfachen nginx-Service erstellt und dann docker service ps <service_name> verwendet, um seine Aufgaben anzuzeigen. Dabei haben Sie die grundlegenden Ausgabespalten wie ID, Name, Image, Knoten (Node), gewünschten Zustand (Desired State) und aktuellen Zustand (Current State) verstanden.

Darüber hinaus haben Sie untersucht, wie Sie detailliertere Informationen zu den Aufgaben erhalten können, indem Sie die Option --no-trunc verwenden, um die Ausgabe nicht abzukürzen. Dadurch können Sie die vollständigen IDs und andere umfassende Details zu jeder Aufgabe sehen.