Loading...

Wie man docker cp verwendet

Jonas Scholz - Co-Founder von sliplane.ioJonas Scholz
4 min

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 die UID:GID des Benutzers, der den Befehl docker 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, kopiert docker 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:

  1. 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 kopiert myfile.txt aus deinem aktuellen Verzeichnis in das /tmp/-Verzeichnis innerhalb des Containers my_container.
  2. 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 holt myfile.txt aus dem /tmp/-Verzeichnis in my_container und speichert es als local_copy.txt in deinem aktuellen Verzeichnis.
  3. 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 du docker exec mit tar 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.

Willkommen in der Container-Cloud

Sliplane macht es einfach, Container in der Cloud zu deployen und bei Bedarf zu skalieren. Probier es jetzt aus!