Container Inhalt inspizieren ohne Shell
Container haben den Betrieb von Softwaresystemen seit einigen Jahren modernisiert.
Mit Docker, Podman und Kubernetes ist ein effizienter und automatisierter Betrieb möglich, der früher undenkbar war.
Doch manchmal stört die Isolation, die Container mit sich bringen:
Was, wenn es gilt, den Inhalt eines Containers zur Laufzeit zu inspizieren und es ist keine Shell installiert?
Ohne Shell ist ein docker exec
nur bedingt hilfreich.
Kubernetes bringt seit einiger Zeit das kubectl debug
Kommando mit, mit dem dies sogar im Cluster möglich ist.
Das wäre auch für Docker manchmal ganz praktisch:
Einfach einen zweiten Container starten, und mit den darin enthaltenen Werkzeugen die Prozesse und das Dateisystem des anderen Containers analysieren und inspizieren.
Und das geht tatsächlich:
Durch den Docker Schalter --pid
kann der für den neuen Container zu verwendende Prozessraum angegeben werden.
Hier kann ein anderer Container durch das Präfix container:
und dann Namen oder ID ausgewählt werden.
Schaut man sich dann im neuen Container um, so sind die Prozesse aus dem anderen Container zu sehen.
Und darüber hinaus ist auch das Dateisystem zu finden: Durch die Einträge unter /proc
findet sich das Wurzelverzeichnis (root) und auch das aktuelle Arbeitsverzeichnis (`cwd
) des Prozesses.
$ docker run -u root --rm -it --privileged --security-opt seccomp=unconfined --pid container:2626d0e142d8 trion/curl / # / # ps PID USER TIME COMMAND 1 1002 0:12 java org.springframework.boot.loader.launch.JarLauncher 212 root 0:00 /bin/sh 218 root 0:00 ps / # cd /proc/1/root/ /proc/1/root # ls bin cnb etc layers lib64 root sbin tmp var boot dev home lib proc run sys usr workspace
Mit diesem Weg ist es sehr einfach möglich, einen laufenden Container zu inspizieren, selbst wenn benötigte Werkzeuge, wie eine Shell, nicht installiert sind.
Zu den Themen Kubernetes, Docker und Cloudarchitektur bieten wir sowohl Beratung, Entwicklungsunterstützung als auch passende Schulungen an:
Auch für Ihren individuellen Bedarf können wir Workshops und Schulungen anbieten. Sprechen Sie uns gerne an.