Dateien in einem laufenden Container modifizieren
In diesem Schritt lernen wir, wie man Dateien in einem laufenden Container verändert. Dies kann für Debugging-Zwecke nützlich sein, etwa um Konfigurationsdateien anzupassen oder temporäre Skripte zu einem bereits laufenden Container hinzuzufügen.
Wir beginnen mit der Ausführung eines einfachen Containers basierend auf dem ubuntu
-Image, das umfangreicher ist als alpine
und eine Shell sowie gängige Utilities enthält.
docker run -d --name my-ubuntu ubuntu sleep 3600
Dieser Befehl startet einen Ubuntu-Container im Detached-Modus (-d
) und hält ihn mit dem Befehl sleep 3600
für eine Stunde aktiv. Wir haben den Container zur einfachen Referenz my-ubuntu
genannt.
Nun verwenden wir docker exec
, um eine Shell innerhalb des laufenden Containers zu öffnen.
docker exec -it my-ubuntu /bin/bash
Sie sollten sich nun in der Bash-Shell des my-ubuntu
-Containers befinden. Die Eingabeaufforderung zeigt an, dass Sie im Container sind.
Innerhalb des Containers erstellen wir eine neue Datei im Verzeichnis /tmp
.
echo "This is a test file." > /tmp/test_file.txt
Überprüfen wir nun, ob die Datei erstellt wurde und den korrekten Inhalt hat.
cat /tmp/test_file.txt
Die Ausgabe sollte This is a test file.
lauten. Dies bestätigt, dass wir erfolgreich eine Datei im laufenden Container erstellen und beschreiben konnten.
Um die Shell des Containers zu verlassen, geben Sie einfach exit
ein.
exit
Sie befinden sich nun wieder im Terminal Ihrer LabEx-VM.
Mit dem Befehl docker cp
können wir Dateien auch in einen laufenden Container kopieren und daraus extrahieren. Erstellen wir zunächst eine Datei auf unserer LabEx-VM und kopieren sie in den Container.
Erstellen Sie eine Datei namens local_file.txt
in Ihrem ~/project
-Verzeichnis.
echo "This file is from the host." > ~/project/local_file.txt
Kopieren Sie diese Datei nun in das /tmp
-Verzeichnis des my-ubuntu
-Containers.
docker cp ~/project/local_file.txt my-ubuntu:/tmp/
Die Syntax für docker cp
lautet: docker cp <Quellpfad> <Container-Name>:<Zielpfad>
oder docker cp <Container-Name>:<Quellpfad> <Zielpfad>
.
Verifizieren wir, ob die Datei in den Container kopiert wurde. Öffnen Sie erneut die Shell des Containers.
docker exec -it my-ubuntu /bin/bash
Prüfen Sie im Container, ob local_file.txt
in /tmp
vorhanden ist.
ls /tmp/
Sie sollten local_file.txt
zusammen mit test_file.txt
aufgelistet sehen.
Sehen wir uns nun den Inhalt von local_file.txt
im Container an.
cat /tmp/local_file.txt
Die Ausgabe sollte This file is from the host.
lauten.
Verlassen Sie die Shell des Containers erneut.
exit
Abschließend bereinigen wir den Container.
docker stop my-ubuntu
docker rm my-ubuntu
Dieser Schritt hat gezeigt, wie man Dateien in einem laufenden Container mit docker exec
und Standard-Linux-Befehlen modifiziert sowie wie man Dateien zwischen Host und Container mit docker cp
austauscht.