Wie man docker cp verwendet

Der Befehl docker cp
ist ein praktisches Tool, mit dem du Dateien und Ordner zwischen deinem Computer und einem Docker-Container hin und her bewegen kannst. Es ist wie eine Brücke, die dir hilft, Daten einfach zu übertragen – egal ob du etwas von deinem lokalen Rechner in einen Container kopierst oder Dateien aus einem Container auf dein lokales System holst.
Lass uns anschauen, wie du diesen Befehl verwenden kannst und was du darüber wissen solltest.
Grundlegende Nutzung
Das allgemeine Format für die Verwendung von docker cp
sieht so aus:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
CONTAINER
ist der Name oder die ID deines Docker-Containers.SRC_PATH
ist der Quellpfad, wo sich die Datei oder der Ordner befindet, den du kopieren möchtest.DEST_PATH
ist der Zielpfad, wohin du die kopierte Datei oder den Ordner legen möchtest.
Du kannst diesen Befehl verwenden, um Dateien in zwei Richtungen zu kopieren:
- Von deinem lokalen Rechner zu einem Container.
- Von einem Container zu deinem lokalen Rechner.
Der Container kann laufen oder gestoppt sein; das spielt keine Rolle. Wenn du Pfade innerhalb des Containers angibst, werden sie relativ zum Root-Verzeichnis (/
) des Containers betrachtet. Ob du also compassionate_darwin:/tmp/foo/myfile.txt
oder compassionate_darwin:tmp/foo/myfile.txt
schreibst, für Docker ist das dasselbe.
Auf deinem lokalen Rechner können Pfade absolut (wie /home/user/documents/file.txt
) oder relativ (wie documents/file.txt
) sein. Wenn du einen relativen Pfad verwendest, basiert er auf dem Verzeichnis, in dem du den Befehl docker cp
ausführst.
Wie es funktioniert
Beim Kopieren von Dateien funktioniert docker cp
ähnlich wie der Unix-Befehl cp -a
. Das bedeutet:
- Wenn du ein Verzeichnis kopierst, kopiert es alles darin, einschließlich Unterverzeichnissen.
- Es versucht, die ursprünglichen Dateiberechtigungen beizubehalten. Aber beim Kopieren in einen Container bekommen Dateien die
UID:GID
des Root-Benutzers im Container. Beim Kopieren auf deinen lokalen Rechner erhalten sie dieUID:GID
des Benutzers, der den Befehldocker cp
ausgeführt hat.
Es gibt einige Optionen, die du mit docker cp
verwenden kannst:
-a
oder--archive
: Kopiert alle Benutzer- und Gruppen-ID-Informationen von der Quelle zum Ziel.-L
oder--follow-link
: Wenn der Quellpfad ein symbolischer Link ist, kopiertdocker cp
mit dieser Option das, worauf der Link zeigt, nicht nur den Link selbst.-q
oder--quiet
: Verhindert, dass der Befehl während des Kopiervorgangs Fortschrittsupdates anzeigt, was nützlich sein kann, wenn du ihn in einem Skript oder ohne Terminal ausführst.
Beispiele
Schauen wir uns einige praktische Beispiele an:
- Eine lokale Datei in einen Container kopieren:
Wenn du eine Datei von deinem lokalen Rechner in einen Container kopieren möchtest, könntest du Folgendes verwenden:docker cp ./myfile.txt my_container:/tmp/
Dieser Befehl kopiertmyfile.txt
aus deinem aktuellen Verzeichnis in das/tmp/
-Verzeichnis innerhalb des Containersmy_container
. - Dateien von einem Container in deinen lokalen Pfad kopieren:
Um Dateien von einem Container auf deinen lokalen Rechner zu kopieren, könntest du so vorgehen:docker cp my_container:/tmp/myfile.txt ./local_copy.txt
Dieser Befehl holtmyfile.txt
aus dem/tmp/
-Verzeichnis inmy_container
und speichert es alslocal_copy.txt
in deinem aktuellen Verzeichnis. - Eine Datei von einem Container in die Standardausgabe kopieren:
Wenn du den Inhalt einer Datei direkt sehen möchtest, ohne sie zu speichern, kannst du Folgendes verwenden:docker cp my_container:/tmp/myfile.txt -
Dies streamt den Inhalt der Datei als Tar-Archiv zur Standardausgabe. Du musst das Tar-Format handhaben, wenn du die Daten verwenden möchtest.
Besondere Fälle
Es gibt ein paar Dinge zu beachten:
- Du kannst bestimmte Systemdateien wie in
/proc
,/sys
,/dev
oder temporäre Dateisysteme (tmpfs
) nicht kopieren. Wenn du diese wirklich kopieren musst, könntest dudocker exec
mittar
manuell verwenden müssen. - Wenn du
-
als Quellpfad verwendest, liest es ein Tar-Archiv von der Standardeingabe und extrahiert es zum Zielpfad im Container. Wenn du-
als Zielpfad verwendest, streamt es den Inhalt der Quelle als Tar-Archiv zur Standardausgabe.
Abschließende Gedanken
Der Befehl docker cp
ist ein mächtiges Tool für die Verwaltung von Dateien zwischen deinem lokalen Rechner und Docker-Containern. Ob du eine Entwicklungsumgebung einrichtest, Fehler behebst oder einfach nur Daten hin und her bewegen musst – zu verstehen, wie man docker cp
verwendet, kann deinen Docker-Workflow viel reibungsloser gestalten.