Verwendung des docker compose ps Befehls zur Container-Auflistung

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 compose ps effektiv nutzen können, um Container aufzulisten, die von Docker Compose verwaltet werden. Sie beginnen mit der Installation von Docker Compose und der Einrichtung eines einfachen Projekts mit einer docker-compose.yml-Datei.

Anschließend erforschen Sie, wie Sie nur laufende Container auflisten, beendete Container in der Ausgabe anzeigen, Container basierend auf ihrem Status filtern und die Ausgabe im JSON-Format für einfachere Verarbeitung und Integration formatieren können. Diese praktische Übung vermittelt Ihnen die Fähigkeiten, Ihre Docker Compose-Dienste effizient zu überwachen und zu verwalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ps -.-> lab-555086{{"Verwendung des docker compose ps Befehls zur Container-Auflistung"}} docker/pull -.-> lab-555086{{"Verwendung des docker compose ps Befehls zur Container-Auflistung"}} end

Laufende Container mit docker compose ps auflisten

In diesem Schritt lernen Sie, wie Sie laufende Container mit dem Befehl docker compose ps auflisten können. Bevor wir docker compose verwenden können, müssen wir es zunächst installieren.

Zuerst installieren wir Docker Compose. Wir laden die neueste stabile Version herunter.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Dieser Befehl lädt die Docker Compose-Binärdatei für Ihre Systemarchitektur herunter und speichert sie unter /usr/local/bin/docker-compose.

Als nächstes müssen wir ausführbare Berechtigungen für die Binärdatei vergeben.

sudo chmod +x /usr/local/bin/docker-compose

Nun überprüfen wir die Installation, indem wir die Version anzeigen lassen.

docker-compose --version

In der Ausgabe sollte die installierte Version von Docker Compose erscheinen.

Um docker compose ps zu demonstrieren, benötigen wir eine docker-compose.yml-Datei und einige laufende Services. Erstellen wir eine einfache docker-compose.yml-Datei in Ihrem ~/project-Verzeichnis.

nano ~/project/docker-compose.yml

Fügen Sie folgenden Inhalt zur Datei hinzu:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  app:
    image: alpine:latest
    command: sleep infinity

Diese docker-compose.yml-Datei definiert zwei Services: web mit dem nginx-Image und app mit dem alpine-Image. Der web-Service mappt Port 80 des Hosts auf Port 80 im Container. Der app-Service führt den Befehl sleep infinity aus, um den Container am Laufen zu halten.

Speichern Sie die Datei und verlassen Sie den Editor (Strg+X, Y, Enter).

Nun laden wir die benötigten Images herunter.

docker pull nginx:latest
docker pull alpine:latest

Diese Befehle laden die Images nginx:latest und alpine:latest von Docker Hub herunter.

Als nächstes starten wir die in der docker-compose.yml-Datei definierten Services. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden.

cd ~/project
docker-compose up -d

Der Befehl docker-compose up -d erstellt, startet und verbindet Container für einen Service. Das Flag -d führt die Container im Detached-Modus aus, was bedeutet, dass sie im Hintergrund laufen.

Nun, da die Container laufen, können wir docker compose ps verwenden, um sie aufzulisten.

docker-compose ps

Dieser Befehl listet die laufenden Container auf, die in Ihrer docker-compose.yml-Datei definiert sind. Sie sollten eine ähnliche Ausgabe wie diese sehen, die die Containernamen, Befehle, Status und Ports anzeigt.

NAME                COMMAND             SERVICE             STATUS              PORTS
project-app-1       "sleep infinity"    app                 running
project-web-1       "/docker-entrypoint.sh nginx -g 'daemon off;'"   web                 running             0.0.0.0:80->80/tcp

Die Ausgabe zeigt, dass die Container project-app-1 und project-web-1 laufen. Der NAME setzt sich typischerweise aus dem Projektnamen (dem Verzeichnisnamen), dem Servicenamen und einer Nummer zusammen.

Alle Container inklusive beendeter auflisten

Im vorherigen Schritt haben wir docker compose ps verwendet, um nur laufende Container aufzulisten. Manchmal möchten Sie jedoch alle Container sehen, einschließlich derjenigen, die beendet oder gestoppt wurden.

Um alle Container inklusive der beendeten aufzulisten, können Sie das -a-Flag mit dem docker compose ps-Befehl verwenden.

Zuerst stoppen wir einen der laufenden Container, um die Wirkung des -a-Flags zu demonstrieren. Wir stoppen den app-Service. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden.

cd ~/project
docker-compose stop app

Dieser Befehl stoppt den Container für den app-Service. Der Container läuft nicht mehr, existiert aber weiterhin.

Nun listen wir die Container erneut mit docker compose ps auf.

docker-compose ps

Sie sollten sehen, dass nur der web-Container als laufend aufgeführt wird. Der app-Container wird nicht angezeigt, da er gestoppt ist.

NAME                COMMAND             SERVICE             STATUS              PORTS
project-web-1       "/docker-entrypoint.sh nginx -g 'daemon off;'"   web                 running             0.0.0.0:80->80/tcp

Jetzt verwenden wir das -a-Flag, um alle Container inklusive des gestoppten aufzulisten.

docker-compose ps -a

Dieser Befehl zeigt alle Container an, die in Ihrer docker-compose.yml-Datei definiert sind, unabhängig von ihrem Status.

NAME                COMMAND             SERVICE             STATUS              PORTS
project-app-1       "sleep infinity"    app                 exited (0)
project-web-1       "/docker-entrypoint.sh nginx -g 'daemon off;'"   web                 running             0.0.0.0:80->80/tcp

Sie können sehen, dass sowohl der project-app-1- als auch der project-web-1-Container aufgeführt werden. Die STATUS-Spalte für project-app-1 zeigt exited an, was bedeutet, dass er gestoppt ist.

Die Verwendung von docker compose ps -a ist nützlich, um den Zustand aller Ihrer Services zu sehen, auch wenn sie aktuell nicht aktiv sind.

Container nach Status filtern

In den vorherigen Schritten haben wir gelernt, wie man laufende und alle Container auflistet. Manchmal möchten Sie die Containerliste jedoch nach ihrem Status filtern.

Der Befehl docker compose ps ermöglicht es Ihnen, die Ausgabe mit dem --filter-Flag zu filtern. Sie können nach verschiedenen Kriterien filtern, einschließlich des Container-Status.

Die gängigen Container-Status sind:

  • created: Der Container wurde erstellt, aber nicht gestartet.
  • restarting: Der Container wird gerade neu gestartet.
  • running: Der Container läuft aktuell.
  • removing: Der Container wird entfernt.
  • paused: Der Container ist pausiert.
  • exited: Der Container wurde gestoppt.
  • dead: Der Container ist beendet (dead).

Lassen Sie uns die Container filtern, um nur die laufenden anzuzeigen. Wir wissen bereits, dass docker compose ps standardmäßig laufende Container anzeigt, aber wir können dasselbe mit dem Filter erreichen. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden.

cd ~/project
docker-compose ps --filter status=running

Dieser Befehl listet nur Container mit dem Status running auf. Sie sollten nur den web-Container sehen.

NAME                COMMAND             SERVICE             STATUS              PORTS
project-web-1       "/docker-entrypoint.sh nginx -g 'daemon off;'"   web                 running             0.0.0.0:80->80/tcp

Jetzt filtern wir die Container, um nur die beendeten anzuzeigen. Denken Sie daran, dass wir den app-Container im vorherigen Schritt gestoppt haben, daher sollte sein Status exited sein.

docker-compose ps --filter status=exited

Dieser Befehl listet nur Container mit dem Status exited auf. Sie sollten nur den app-Container sehen.

NAME                COMMAND             SERVICE             STATUS              PORTS
project-app-1       "sleep infinity"    app                 exited (0)

Sie können auch nach mehreren Statuswerten filtern, indem Sie das --filter-Flag mehrfach angeben. Zum Beispiel, um Container anzuzeigen, die entweder laufen oder beendet sind:

docker-compose ps --filter status=running --filter status=exited

Dieser Befehl listet sowohl den web- als auch den app-Container auf.

NAME                COMMAND             SERVICE             STATUS              PORTS
project-app-1       "sleep infinity"    app                 exited (0)
project-web-1       "/docker-entrypoint.sh nginx -g 'daemon off;'"   web                 running             0.0.0.0:80->80/tcp

Die Filterung nach Status ist eine leistungsstarke Methode, um schnell Container in einem bestimmten Zustand zu finden, was sehr nützlich für das Debugging und die Verwaltung Ihrer Services ist.

Ausgabe als JSON formatieren

In den vorherigen Schritten haben wir Container mit docker compose ps aufgelistet und gefiltert. Standardmäßig wird die Ausgabe in einem menschenlesbaren Tabellenformat angezeigt. Für Skripte oder die Integration mit anderen Tools benötigen Sie die Ausgabe jedoch möglicherweise in einem strukturierten Format wie JSON.

Der Befehl docker compose ps ermöglicht es Ihnen, die Ausgabe mit dem --format-Flag zu formatieren. Sie können verschiedene Formate angeben, darunter json.

Lassen Sie uns alle Container (laufende und gestoppte) auflisten und die Ausgabe als JSON formatieren. Stellen Sie sicher, dass Sie sich im ~/project-Verzeichnis befinden.

cd ~/project
docker-compose ps -a --format json

Dieser Befehl gibt die Informationen über alle Container im JSON-Format aus. Die Ausgabe ist ein JSON-Array, wobei jedes Element einen Container und seine Details repräsentiert.

[
  {
    "ID": "...",
    "Name": "project-app-1",
    "Image": "alpine:latest",
    "Command": "sleep infinity",
    "Project": "project",
    "Service": "app",
    "Created": "...",
    "State": "exited",
    "Status": "Exited (0) ...",
    "Health": "",
    "ExitCode": 0,
    "Publishers": []
  },
  {
    "ID": "...",
    "Name": "project-web-1",
    "Image": "nginx:latest",
    "Command": "/docker-entrypoint.sh nginx -g 'daemon off;'",
    "Project": "project",
    "Service": "web",
    "Created": "...",
    "State": "running",
    "Status": "Up ...",
    "Health": "",
    "ExitCode": null,
    "Publishers": [
      {
        "URL": "0.0.0.0",
        "TargetPort": 80,
        "PublishedPort": 80,
        "Protocol": "tcp"
      }
    ]
  }
]

Die JSON-Ausgabe bietet eine strukturierte Darstellung der Container-Informationen, was das programmatische Parsen und Verarbeiten erleichtert. Jeder Container wird als JSON-Objekt mit Feldern wie ID, Name, Image, State, Status usw. dargestellt.

Die Verwendung des --format json-Flags ist besonders nützlich, wenn Sie spezifische Informationen über Ihre Container für Automatisierungs- oder Berichtszwecke extrahieren müssen.

Abschließend bereinigen wir die Container, die wir während dieses Labs erstellt haben.

docker-compose down

Dieser Befehl stoppt und entfernt die Container, Netzwerke und Volumes, die von docker-compose up erstellt wurden.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker compose ps verwenden, um von Docker Compose verwaltete Container aufzulisten. Sie begannen mit der Installation von Docker Compose und der Überprüfung der Installation. Anschließend erstellten Sie eine einfache docker-compose.yml-Datei mit zwei Services und luden die benötigten Images herunter. Mit docker-compose up -d starteten Sie die Services im Detached-Modus.

Danach erkundeten Sie den Befehl docker compose ps, um laufende Container aufzulisten. Sie lernten, wie Sie gestoppte Container in der Ausgabe mit dem -a-Flag einbeziehen, Container nach Status mit der Option --filter status=<status> filtern und die Ausgabe als JSON mit der Option --format json formatieren. Abschließend bereinigten Sie die erstellten Ressourcen, indem Sie die Services mit docker-compose down stoppten und entfernten.