Verwendung des docker compose top Befehls zur Anzeige laufender Prozesse

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 top verwenden, um laufende Prozesse in Ihren Docker-Containern anzuzeigen. Wir beginnen mit der Vorbereitung einer einfachen docker-compose.yml-Datei, um einen Service zu definieren, und starten den Service dann mit Docker Compose. Abschließend verwenden Sie den Befehl docker compose top, sowohl allgemein als auch mit einem spezifischen Servicenamen, um die innerhalb der Container laufenden Prozesse zu untersuchen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/top("Display Running Processes in Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ps -.-> lab-555094{{"Verwendung des docker compose top Befehls zur Anzeige laufender Prozesse"}} docker/start -.-> lab-555094{{"Verwendung des docker compose top Befehls zur Anzeige laufender Prozesse"}} docker/top -.-> lab-555094{{"Verwendung des docker compose top Befehls zur Anzeige laufender Prozesse"}} docker/pull -.-> lab-555094{{"Verwendung des docker compose top Befehls zur Anzeige laufender Prozesse"}} end

Vorbereitung einer einfachen docker-compose.yml-Datei

In diesem Schritt bereiten wir eine einfache docker-compose.yml-Datei vor. Bevor wir beginnen, sollten wir verstehen, was Docker Compose ist. Docker Compose ist ein Tool zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen. Mit Compose verwenden Sie eine YAML-Datei, um die Services Ihrer Anwendung zu konfigurieren. Anschließend können Sie mit einem einzigen Befehl alle Services aus Ihrer Konfiguration erstellen und starten.

Da Docker Compose in der LabEx-Umgebung nicht vorinstalliert ist, müssen wir es zunächst installieren. Wir laden die Docker Compose-Binary herunter und machen sie ausführbar.

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
sudo chmod +x /usr/local/bin/docker-compose

Nachdem Docker Compose installiert ist, erstellen wir eine einfache docker-compose.yml-Datei im Verzeichnis ~/project. Diese Datei definiert einen einzelnen Service, der das ubuntu-Image verwendet und einfach den Befehl sleep infinity ausführt, um den Container am Laufen zu halten.

Wir verwenden den nano-Editor, um die Datei zu erstellen und zu bearbeiten.

nano ~/project/docker-compose.yml

Fügen Sie im nano-Editor folgenden Inhalt ein:

version: "3.8"
services:
  ubuntu_service:
    image: ubuntu
    command: sleep infinity

Lassen Sie uns diese docker-compose.yml-Datei aufschlüsseln:

  • version: '3.8' gibt die Version des Compose-Dateiformats an.
  • services: definiert die Services für Ihre Anwendung.
  • ubuntu_service: ist der Name unseres Services. Sie können jeden beliebigen Namen wählen.
  • image: ubuntu spezifiziert das Docker-Image, das für diesen Service verwendet wird. In diesem Fall verwenden wir das offizielle ubuntu-Image. Da das Image möglicherweise nicht lokal vorhanden ist, wird Docker Compose es automatisch herunterladen, falls erforderlich.
  • command: sleep infinity gibt den Befehl an, der beim Start des Containers ausgeführt wird. sleep infinity ist ein einfacher Befehl, der den Container unbegrenzt am Laufen hält.

Nachdem Sie den Inhalt eingefügt haben, speichern Sie die Datei mit Strg + X, dann Y zur Bestätigung und Enter, um sie unter dem Standarddateinamen docker-compose.yml zu speichern.

Um sicherzustellen, dass das ubuntu-Image verfügbar ist, laden wir es manuell mit dem Befehl docker pull herunter. Dies ist eine gute Praxis, um sicherzustellen, dass das Image bereit ist, bevor der Service mit Docker Compose gestartet wird.

docker pull ubuntu

Sie sollten eine Ausgabe sehen, die anzeigt, dass das ubuntu-Image heruntergeladen wird.

Starten der in der docker-compose.yml-Datei definierten Services

In diesem Schritt werden wir die in der docker-compose.yml-Datei definierten Services starten, die wir im vorherigen Schritt erstellt haben. Hierfür verwenden wir den Befehl docker compose up.

Navigieren Sie zu dem Verzeichnis, in dem Sie die docker-compose.yml-Datei gespeichert haben, also ~/project.

cd ~/project

Führen Sie nun den Befehl docker compose up aus. Die Option -d startet die Container im Detached-Modus, was bedeutet, dass sie im Hintergrund laufen und Ihr Terminal nicht blockieren.

docker compose up -d

Sie sollten eine Ausgabe sehen, die anzeigt, dass der Service erstellt und gestartet wird. Docker Compose erstellt ein Netzwerk, ein Volume (falls definiert, was in unserem einfachen Beispiel nicht der Fall ist) und den Container für den ubuntu_service.

Um zu überprüfen, ob der Container läuft, können Sie den Befehl docker ps verwenden.

docker ps

Sie sollten einen Container mit dem Image ubuntu und dem Befehl sleep infinity sehen. Der Status sollte Up sein. Der Containername wird mit dem Verzeichnisnamen (project in diesem Fall) und dem Servicenamen (ubuntu_service) präfixiert sein.

Verwendung von docker compose top zur Anzeige aller laufenden Prozesse

In diesem Schritt verwenden wir den Befehl docker compose top, um die laufenden Prozesse innerhalb der von Docker Compose verwalteten Container anzuzeigen. Dieser Befehl ähnelt dem top-Befehl in Linux, zeigt jedoch die Prozesse innerhalb der Container an.

Stellen Sie sicher, dass Sie sich noch im Verzeichnis ~/project befinden, wo sich Ihre docker-compose.yml-Datei befindet.

cd ~/project

Führen Sie nun den Befehl docker compose top aus.

docker compose top

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

ID                  NAME                PID                 COMMAND             ELAPSED
<container_id>      project-ubuntu_service-1   <pid>               sleep infinity      <time>

Diese Ausgabe zeigt die Prozesse, die in jedem Container laufen, der von Ihrer docker-compose.yml-Datei verwaltet wird. In unserem Fall haben wir nur einen Service (ubuntu_service), und der einzige laufende Prozess ist sleep infinity, der Befehl, den wir in der docker-compose.yml-Datei angegeben haben.

Die Ausgabe enthält:

  • ID: Die Container-ID
  • NAME: Der Name des Containers, typischerweise im Format <Verzeichnisname>-<Servicename>-<Instanznummer>
  • PID: Die Prozess-ID des im Container ausgeführten Befehls
  • COMMAND: Der im Container ausgeführte Befehl
  • ELAPSED: Die seit Befehlstart verstrichene Zeit

Dieser Befehl ist nützlich, um zu überprüfen, was in Ihren Containern läuft, und Probleme zu beheben.

Verwendung von docker compose top mit Servicename zur Anzeige spezifischer Prozesse

In diesem Schritt lernen wir, wie der Befehl docker compose top verwendet wird, um die Prozesse eines bestimmten Services aus der docker-compose.yml-Datei anzuzeigen. Dies ist besonders nützlich, wenn mehrere Services laufen und Sie nur die Prozesse eines bestimmten Services untersuchen möchten.

Stellen Sie sicher, dass Sie sich weiterhin im Verzeichnis ~/project befinden.

cd ~/project

Um die Prozesse eines bestimmten Services anzuzeigen, fügen Sie den Servicenamen an den docker compose top-Befehl an. In unserer docker-compose.yml-Datei lautet der Servicename ubuntu_service.

docker compose top ubuntu_service

Sie sollten eine ähnliche Ausgabe wie im vorherigen Schritt sehen, diesmal werden jedoch nur die Prozesse des ubuntu_service-Containers angezeigt:

ID                  NAME                PID                 COMMAND             ELAPSED
<container_id>      project-ubuntu_service-1   <pid>               sleep infinity      <time>

Falls Sie weitere Services in Ihrer docker-compose.yml-Datei definiert hätten und diese laufen würden, würde der Befehl docker compose top ohne Servicename die Prozesse aller Services anzeigen. Durch die Angabe von ubuntu_service filtern wir die Ausgabe, sodass nur die Prozesse dieses spezifischen Service-Containers angezeigt werden.

Dieser gezielte Ansatz ist hilfreich für die Fehlersuche und Überwachung einzelner Komponenten Ihrer Multi-Container-Anwendung.

Zusammenfassung

In diesem Lab haben wir gelernt, wie der Befehl docker compose top verwendet wird, um laufende Prozesse in Docker-Containern anzuzeigen, die von Docker Compose verwaltet werden. Wir begannen mit der Vorbereitung einer einfachen docker-compose.yml-Datei, was die Installation von Docker Compose und die Definition eines Services mit dem ubuntu-Image beinhaltete, zusammen mit einem sleep infinity-Befehl, um den Container am Laufen zu halten.

Nach der Vorbereitung starteten wir die in der docker-compose.yml-Datei definierten Services. Abschließend untersuchten wir die Verwendung des docker compose top-Befehls - zunächst zur Anzeige aller laufenden Prozesse über alle Services hinweg und dann spezifisch für einen einzelnen Service durch Angabe seines Namens. Diese praktische Übung zeigte, wie man die innerhalb unserer Docker Compose-verwalteten Container laufenden Prozesse untersuchen kann.