So debuggen Sie laufende Docker-ContainerSo debuggen Sie laufende Docker-Container
Bild vom Herausgeber | Midjourney & Canva

Container können sich aufgrund von Konfigurationsproblemen, Anwendungsfehlern oder Ressourcenbeschränkungen manchmal unerwartet verhalten. In diesem Tutorial gehen wir die verschiedenen Methoden zum Debuggen laufender Container am Beispiel eines Postgres-Containers durch.

Voraussetzungen

So können Sie diesem Tutorial folgen:

  • Sie sollten Docker in Ihrer Entwicklungsumgebung installiert haben. Docker herunterladen falls Sie das nicht bereits getan haben.
  • Sie sollten mit der Funktionsweise von Docker und den grundlegenden Befehlen zum Abrufen von Photos sowie zum Starten, Stoppen und Verwalten von Containern vertraut sein.

Ziehen und Starten eines PostgreSQL-Containers

Lassen Sie uns zunächst das neueste PostgreSQL-Picture von DockerHub abrufen und einen Container starten. Hier ziehen wir postgres:16 mit dem docker pull Befehl:

$ docker pull postgres:16

Sobald der Pull abgeschlossen ist, können Sie den Postgres-Container mit dem folgenden Docker-Run-Befehl starten. Beachten Sie, dass der POSTGRES_PASSWORD ist die erforderliche Umgebungsvariable, die Sie zum Starten des Containers benötigen:

$ docker run --name my_postgres -e POSTGRES_PASSWORD=my_postgres_password -d postgres

Dieser Befehl startet einen neuen Container namens my_postgres mit PostgreSQL darin. Sie können dies überprüfen, indem Sie den docker ps Befehl:

Welche Ausgaben:

CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS         PORTS      NAMES
5cb6fabbbc8b   postgres:16   "docker-entrypoint.s…"   18 seconds in the past   Up 9 seconds   5432/tcp   my_postgres

1. Überprüfen Sie den Behälter

Du kannst den … benutzen docker examine Befehl zum Abrufen detaillierter Informationen zu einem Container. Dies kann nützlich sein, um die Konfiguration, die Netzwerkeinstellungen und den Standing des Containers zu überprüfen:

$ docker examine my_postgres

Dieser Befehl gibt ein JSON-Objekt mit allen Particulars zum Container aus. Sie können Instruments wie jq um diese Ausgabe zu analysieren und bestimmte interessante Informationen daraus zu extrahieren.

Docker-InspektionDocker-Inspektion
Abgeschnittene Ausgabe von Docker Inspection My_Postgres

2. Containerprotokolle anzeigen

Der docker logs Der Befehl ruft die Protokolle aus einem laufenden Container ab. Dies ist nützlich für die Behebung von Problemen im Zusammenhang mit der im Container ausgeführten Anwendung.

$ docker logs my_postgres

Docker-ProtokolleDocker-Protokolle
Abgeschnittene Ausgabe der Docker-Protokolle my_postgres

3. Befehle innerhalb des Containers ausführen

Manchmal ist es hilfreich, in den Container zu gehen und eine Reihe von Diagnosebefehlen auszuführen. Sie können dies mit dem docker exec Befehl, mit dem Sie Befehle innerhalb eines laufenden Containers ausführen können. Dies ist nützlich, um das Dateisystem des Containers zu überprüfen, Umgebungsvariablen zu prüfen usw.

So können Sie eine interaktive Shell-Sitzung innerhalb des laufenden Containers starten:

$ docker exec -it my_postgres /bin/bash

Dieser Befehl öffnet eine interaktive Bash-Shell innerhalb des my_postgres Container. So können Sie Befehle innerhalb des Containers ausführen.

4. Überprüfen Sie laufende Prozesse

Der docker high Der Befehl zeigt die laufenden Prozesse in einem Container an. So können Sie feststellen, ob Prozesse mehr Ressourcen verbrauchen als erwartet oder ob unerwartete Prozesse ausgeführt werden:

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
ollama              8116                8096                0                   09:41               ?                   00:00:00            postgres
ollama              8196                8116                0                   09:41               ?                   00:00:00            postgres: checkpointer
ollama              8197                8116                0                   09:41               ?                   00:00:00            postgres: background author
ollama              8199                8116                0                   09:41               ?                   00:00:00            postgres: walwriter
ollama              8200                8116                0                   09:41               ?                   00:00:00            postgres: autovacuum launcher
ollama              8201                8116                0                   09:41               ?                   00:00:00            postgres: logical replication launcher

5. Am Behälter befestigen

Der docker connect Mit diesem Befehl können Sie Ihr Terminal an den Hauptprozess eines laufenden Containers anhängen. Dies kann zum Debuggen interaktiver Prozesse nützlich sein:

$ docker connect my_postgres

Beachten Sie, dass das Anhängen an einen Container sich von dem an einen Container unterscheidet. docker exec da es Sie mit dem Hauptprozess des Containers verbindet und dessen Standardausgabe und Standardfehler an Ihr Terminal streamt.

6. Ressourcennutzung anzeigen

Mit dem docker stats Mit dem Befehl können Sie Echtzeitstatistiken zur Containerressourcennutzung einschließlich CPU, Speicher und Netzwerk abrufen. Das ist hilfreich, wenn Sie Leistungsprobleme analysieren möchten:

$ docker stats my_postgres

Hier ist eine Beispielausgabe:

CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O         PIDS
5cb6fabbbc8b   my_postgres   0.03%     34.63MiB / 3.617GiB   0.94%     10.6kB / 0B   38.4MB / 53.1MB   6



CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O         PIDS
5cb6fabbbc8b   my_postgres   0.03%     34.63MiB / 3.617GiB   0.94%     10.6kB / 0B   38.4MB / 53.1MB   6



CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O         PIDS
5cb6fabbbc8b   my_postgres   0.03%     34.63MiB / 3.617GiB   0.94%     10.6kB / 0B   38.4MB / 53.1MB   6


...

Zum Debuggen von Docker-Containern gehört das Überprüfen der Containerkonfiguration, das Anzeigen von Protokollen, das Ausführen von Befehlen innerhalb des Containers und das Überwachen der Ressourcennutzung. Mit diesen Techniken können Sie Probleme mit Ihren Containeranwendungen effektiv beheben. Viel Spaß beim Debuggen!

Zusätzliche Ressourcen

Wenn Sie tiefer in die Materie einsteigen möchten, schauen Sie sich die folgenden Ressourcen an:

Bala Priya C ist Entwicklerin und technische Redakteurin aus Indien. Sie arbeitet gerne an der Schnittstelle zwischen Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Ihre Interessens- und Fachgebiete umfassen DevOps, Datenwissenschaft und Verarbeitung natürlicher Sprache. Sie liest, schreibt, programmiert und trinkt gerne Kaffee! Derzeit arbeitet sie daran, ihr Wissen zu lernen und mit der Entwickler-Group zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt auch ansprechende Ressourcenübersichten und Programmier-Tutorials.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert