1073 Stimmen

Erforschung des Dateisystems des Docker-Containers

Ich habe mit Docker festgestellt, dass ich verstehen muss, was drinnen in einem Container passiert oder welche Dateien darin existieren. Ein Beispiel ist das Herunterladen von Images aus dem Docker-Index - man hat keine Ahnung, was das Image enthält, daher ist es unmöglich, die Anwendung zu starten.

Was ideal wäre, ist die Möglichkeit, sich per SSH einzuloggen oder Ähnliches. Gibt es ein Tool dafür, oder ist meine Vorstellung von Docker falsch, wenn ich denke, dass ich das tun können sollte.

7voto

flyer2403 Punkte 1051

Ich wollte das machen, aber ich konnte nicht in meinen Container exec machen, da er angehalten war und aufgrund eines Fehlers in meinem Code nicht mehr gestartet wurde.

Was für mich funktioniert hat, war einfach den Inhalt des gesamten Containers in einen neuen Ordner zu kopieren, so wie hier:

docker cp container_name:/app/ new_dummy_folder

Dann konnte ich den Inhalt dieses Ordners erkunden, wie man es mit einem normalen Ordner tun würde.

6voto

xrh Punkte 77

In neueren Versionen von Docker können Sie docker exec [container_name] ausführen, was eine Shell in Ihrem Container startet

Um eine Liste aller Dateien in einem Container zu erhalten, führen Sie einfach docker exec [container_name] ls aus

5voto

saurabh tiwari Punkte 90

Wenn Sie Docker v19.03 verwenden, befolgen Sie die unten stehenden Schritte.

# ID Ihres laufenden Containers finden:

  docker ps

# Bild (Snapshot) aus dem Dateisystem des Containers erstellen

  docker commit 12345678904b5 mysnapshot

# Dieses Dateisystem erkunden 

  docker run -t -i mysnapshot /bin/sh

4voto

dashohoxha Punkte 211

Für mich funktioniert dieser gut (danke an die letzten Kommentare, die auf das Verzeichnis /var/lib/docker/ hingewiesen haben):

chroot /var/lib/docker/containers/2465790aa2c4*/root/

Hier ist 2465790aa2c4 die Kurz-ID des laufenden Containers (wie von docker ps angezeigt), gefolgt von einem Stern.

4voto

Garren S Punkte 5072

Diese Antwort wird denen helfen (wie mir), die das Docker-Volume-Dateisystem erkunden möchten, auch wenn der Container nicht ausgeführt wird.

Liste ausgeführter Docker-Container:

docker ps

\=> CONTAINER ID "4c721f1985bd"

Schauen Sie sich die Docker-Volume-Einhängepunkte auf Ihrem lokalen physischen Rechner an (https://docs.docker.com/engine/tutorials/dockervolumes/):

docker inspect -f {{.Mounts}} 4c721f1985bd

\=> [{ /tmp/container-garren /tmp true rprivate}]

Dies sagt mir, dass das lokale physische Verzeichnis /tmp/container-garren auf das Docker-Volume-Ziel /tmp abgebildet ist.

Zu wissen, dass das lokale physische Verzeichnis (/tmp/container-garren) bedeutet, dass ich das Dateisystem erkunden kann, unabhhängig davon, ob der Docker-Container ausgeführt wird. Das war entscheidend für mich, um herauszufinden, dass einige Restdaten vorhanden waren, die auch nachdem der Container nicht mehr ausgeführt wurde, nicht bestehen sollten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X