UPDATE
Einfachste Methode: Verwenden von Docker Exec
Docker Version 1.3 oder neuer unterstützt den Befehl exec
, der sich ähnlich verhält nsenter
. Dieser Befehl kann einen neuen Prozess in einem bereits ausgeführten Container ausführen (in einem Container muss der PID 1-Prozess bereits ausgeführt werden). Sie können ausführen /bin/bash
, um den Containerstatus zu untersuchen:
docker exec -t -i mycontainer /bin/bash
Siehe Dokumentation zur Docker-Befehlszeile
Alternative Methode 1
Schnappschuss
Sie können das Container-Dateisystem folgendermaßen auswerten:
# find ID of your running container:
docker ps
# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot
# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash
Auf diese Weise können Sie das Dateisystem des laufenden Containers genau zum richtigen Zeitpunkt auswerten. Der Container läuft noch, zukünftige Änderungen sind nicht enthalten.
Sie können den Snapshot später löschen mit (Dateisystem des laufenden Containers ist nicht betroffen!):
docker rmi mysnapshot
Alternative Methode 2
ssh
Wenn Sie einen kontinuierlichen Zugriff benötigen, können Sie sshd in Ihrem Container installieren und den sshd-Daemon ausführen:
docker run -d -p 22 mysnapshot /usr/sbin/sshd -D
# you need to find out which port to connect:
docker ps
Auf diese Weise können Sie Ihre App mit ssh ausführen (verbinden und ausführen, was Sie möchten).
UPDATE: Alternative Methode 3
nsenter
Verwendung nsenter
finden Sie unter https://web.archive.org/web/20160305150559/http://blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker/
Die Kurzversion lautet: Mit nsenter können Sie eine Shell in einen vorhandenen Container einfügen, auch wenn in diesem Container weder SSH noch ein spezieller Daemon ausgeführt wird
docker exec <container> bash
. Sie öffnen also einfach eine Hülle im Behälter.