Container-Prozesse und Ressourcennutzung untersuchen
In diesem Schritt lernen Sie, wie Sie die in einem Container laufenden Prozesse inspizieren und dessen Ressourcenverbrauch überwachen. Dies ist eine grundlegende Fähigkeit für die Fehlersuche und das Verständnis des Verhaltens Ihrer containerisierten Anwendung.
Ein Hauptmerkmal von Containern ist die Prozessisolation. Aus Sicht des Hosts können Sie sehen, was in einem Container läuft, ohne sich hinein-execen zu müssen. Der Befehl docker top ermöglicht es Ihnen, die Hauptprozesse eines Containers anzuzeigen.
Führen Sie den folgenden Befehl aus, um die Prozesse in Ihrem webserver-Container anzuzeigen:
docker top webserver
Die Ausgabe zeigt den Nginx-Masterprozess, der als Root läuft, und seine Worker-Prozesse, die als systemd+ (ein Systembenutzer zur Verbesserung der Sicherheit) laufen. Beachten Sie, dass es mehrere Worker-Prozesse gibt, was für Nginx typisch ist, um gleichzeitige Anfragen effizient zu bearbeiten.
UID PID PPID C STIME TTY TIME CMD
root 4098 4078 0 14:34 ? 00:00:00 nginx: master process nginx -g daemon off;
systemd+ 4161 4098 0 14:34 ? 00:00:00 nginx: worker process
systemd+ 4162 4098 0 14:34 ? 00:00:00 nginx: worker process
Als Nächstes betrachten wir die Ressourcennutzung des Containers. Der Befehl docker stats liefert einen Live-Stream von CPU, Speicher, Netzwerk und Festplatten-I/O eines Containers. Um für dieses Lab eine statische Momentaufnahme zu erhalten, verwenden wir das Flag --no-stream.
docker stats --no-stream webserver
Dieser Befehl zeigt eine Tabelle mit den aktuellen Ressourcenmetriken für den webserver-Container an.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
bda2386621a1 webserver 0.00% 3.125MiB / 3.505GiB 0.09% 6.31kB / 1.27kB 0B / 12.3kB 3
Aus dieser Ausgabe können Sie ersehen, dass der Container sehr wenig CPU (0,00 %) und etwa 3,1 MiB Speicher von den verfügbaren 3,5 GiB Systemspeicher (0,09 %) verwendet und 3 laufende Prozesse hat (der Nginx-Master und 2 Worker-Prozesse). Diese Informationen sind entscheidend für die Identifizierung von Leistungsengpässen oder potenziellen Speicherlecks in Ihren Anwendungen.