Einführung
Docker ist eine beliebte Containerisierungsplattform, die es Entwicklern ermöglicht, Anwendungen in einer eigenständigen, portablen Umgebung zu erstellen, zu verpacken und bereitzustellen. Bei der Verwendung von Docker ist es häufig erforderlich, Dateien zwischen dem Docker-Container und dem Host zu kopieren und zu teilen. Docker bietet einen docker cp
Befehl zum einfachen Kopieren von Dateien und Verzeichnissen zwischen dem Container und dem Host. docker cp
In diesem Artikel werden die Verwendung von Befehlen und allgemeine Beispiele ausführlich vorgestellt .
Docker-CP-Befehl
docker cp
Der Befehl ist ein von Docker bereitgestellter Befehl zum Kopieren von Dateien und Verzeichnissen zwischen dem Host und dem Container. Seine Syntax ist wie folgt:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
CONTAINER
, kann ein laufender oder gestoppter Container sein, entweder Name oder IDSRC_PATH
, der Pfad der Quelldatei oder des Quellverzeichnisses im ContainerDEST_PATH
, der Speicherort des Zielpfads auf dem Host
Hinweis: docker cp
Der Befehl geht davon aus, dass der Containerpfad relativ zum Verzeichnis / (Stammverzeichnis) des Containers und der Hostpfad relativ zum aktuellen Verzeichnis ist, in dem der Docker-Befehl cp ausgeführt wird.
OptionenVerfügbare Parameter
-a
: Behalten Sie die kopierten Dateien oder Verzeichnisse mit ihren ursprünglichen Attributen bei, einschließlich Besitzer, Berechtigungen usw.-L
: Wenn SRC_PATH ein symbolischer Link ist, wird die Datei oder das Verzeichnis kopiert, auf die der Link verweist.-p
: Behält den Zeitstempel der Quelldatei oder des Quellverzeichnisses bei.-R
Oder-r
: Kopieren Sie das gesamte Verzeichnis rekursiv.
SRC_PATH & DEST_PATH
SRC_PATH
und DEST_PATH
sind docker cp
die Schlüsselbestandteile des Befehls. Ob der Pfad korrekt ist, hängt davon ab, ob der Befehl erfolgreich ausgeführt werden kann. Lassen Sie uns die verschiedenen Situationen dieser beiden Pfade analysieren und erklären, ob sie unter verschiedenen Umständen erfolgreich kopiert werden können.
SRC_PATH beim Angeben einer Datei
- wann
DEST_PATH
existiert nicht
Erstellen Sie den erforderlichen Ordner und speichern Sie die Datei wie gewohnt DEST_PATH
darinDEST_PATH
- Wenn
DEST_PATH
nicht vorhanden, endet es mit /
Der Befehl meldet einen Fehler, das Zielverzeichnis muss vorhanden sein
- wenn
DEST_PATH
existiert und eine Datei ist
Das Ziel wird durch den Inhalt der Quelldatei überschrieben
- Wenn
DEST_PATH
vorhanden und ein Verzeichnis ist
Kopieren Sie Dateien mit dem Basisnamen in SRC_PATH
in dieses Verzeichnis
SRC_PATH gibt das Verzeichnis an
- Wenn
DEST_PATH
ein Verzeichnis vorhanden ist, wird die Replikation normal kopiert
- SRC_PATH endet nicht mit /., das Quellverzeichnis wird in dieses Verzeichnis kopiert
- SRC_PATH endet mit /., in das der Inhalt des Quellverzeichnisses kopiert wird
-
Wenn
DEST_PATH
es existiert und eine Datei ist, wird beim Kopieren ein Fehler gemeldet, da das Verzeichnis nicht in eine Datei kopiert werden kann -
Wenn
DEST_PATH
es nicht existiert, wird ein neues VerzeichnisDEST_PATH
als Pfad erstellt und der Inhalt des Quellverzeichnisses wird dorthin kopiert
Anwendungsbeispiel
Kopieren Sie Dateien vom Container auf den Host
- Das Hostverzeichnis existiert bereits
tomcat_muller
Die Dateien , die wir usr/local/tomcat/README.md
in das Host-Verzeichnis kopieren möchten study
, lautet der Befehl wie folgt:
docker cp tomcat_muller:usr/local/tomcat/README.md ./
Führen Sie den Befehl aus. Das Ergebnis ist wie unten gezeigt und wurde erfolgreich in das angegebene Verzeichnis kopiert:
- Das Hostverzeichnis existiert nicht und
/
endet nicht mit
tomcat_muller
Die Dateien , die wir usr/local/tomcat/README.md
in das Host-Verzeichnis kopieren möchten study/test
, lautet der Befehl wie folgt:
docker cp tomcat_muller:usr/local/tomcat/README.md ./test
Führen Sie den Befehl aus. Das Ergebnis ist wie unten dargestellt. Wir haben das Verzeichnis unter dem Verzeichnis erfolgreich study
erstellt test
und die Dateien wurden erfolgreich in das angegebene Verzeichnis kopiert.
- Das Hosts-Verzeichnis existiert nicht und
/
endet mit
Wir wollen die Datei in den Pfad des Hosts kopieren tomcat_muller
. Der Befehl lautet wie folgt:usr/local/tomcat/README.md
study/test/
docker cp tomcat_muller:usr/local/tomcat/README.md ./test/
Führen Sie den Befehl aus. Das Ergebnis sieht wie folgt aus. Da der Pfad nicht vorhanden ist, wird ein Fehler gemeldet. Es gibt kein solches Verzeichnis.
- In vorhandene Datei kopieren
docker cp tomcat_muller:usr/local/tomcat/README.md test.txt
Führen Sie den Befehl aus und die Ergebnisse sind wie folgt:
Der Vorgang beim Kopieren von Verzeichnissen ähnelt dem beim Kopieren von Dateien, daher gehen wir hier nicht näher darauf ein.
Kopieren Sie Dateien vom Host in den Container
Wir wollen die Dateien study
auf dem Host test.txt
in den Container kopieren. Der Befehl lautet wie folgt:
docker cp test.txt tomcat_muller:/
Führen Sie den Befehl aus. Das Ergebnis ist wie folgt:
Verzeichnis vom Host in den Container kopieren
- Zielverzeichnis existiert nicht
Wir möchten study/hogwarts
das Verzeichnis des Hosts in das test
Verzeichnis des Containers kopieren. Der Befehl lautet wie folgt:
docker cp hogwarts tomcat_muller:test/
Führen Sie den Befehl aus. Das Ergebnis ist wie folgt:
- Das Zielverzeichnis ist eine Datei
study/hogwarts
Wir möchten das Host- Verzeichnis in den Container kopieren muller
. Der Befehl lautet wie folgt:
docker cp hogwarts tomcat_muller:muller/
- Das Verzeichnis existiert bereits
study/hogwarts
Wir möchten das Host- Verzeichnis in den Container kopieren /hogwarts
. Der Befehl lautet wie folgt:
docker cp hogwarts tomcat_muller:/hogwarts/
Die Ergebnisse der Ausführung des Befehls sind wie folgt:
Verzeichnis vom Container auf den Host kopieren
Wir kopieren das Verzeichnis tomcat_muller
im Container webapps.dist
auf den Host usr/local/study
. Der Befehl lautet wie folgt:
docker cp tomcat_muller:/usr/local/tomcat/webapps.dist /home/muller/study
Führen Sie den Befehl aus. Das Ergebnis ist wie folgt:
Zusammenfassen
docker cp
Der Befehl ist ein praktisches Tool zum Kopieren von Dateien und Verzeichnissen zwischen Docker-Containern und dem Host-Computer. Mit einfachen Befehlen und Parametern können wir Dateien problemlos zwischen Containern und Hosts übertragen. Dieser Artikel beschreibt docker cp
die Syntax und allgemeine Optionen des Befehls und enthält mehrere Beispiele, die Ihnen helfen, seine Verwendung besser zu verstehen. Durch die flexible Verwendung docker cp
von Befehlen können wir problemlos Dateioperationen und -freigaben in der Docker-Umgebung durchführen.