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.
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
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.