Neuigkeiten von trion.
Immer gut informiert.

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.

Diagnose von Prozessen und Dateisystem eines anderen Containers
$ 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.

Feedback oder Fragen zu einem Artikel – per E-Mail an (info a-t trion.de) oder über unser Kontaktformular. Wir freuen uns auf eine Kontaktaufnahme!

Zur Desktop Version des Artikels