Docker CP

Docker CP
„Es ist kein Zweifel, dass Docker die moderne Entwicklerumgebung revolutioniert hat. Die Möglichkeit, Ihre Anwendungen in einem einzigen Bundle zu verpacken und sie auf eine beliebige Plattform zu versenden.

Aber genug Lob über Docker. In diesem Artikel werden wir diskutieren, wie Dateien in und von einem Container in das Hostsystem kopiert werden und umgekehrt.”

Lass uns anfangen

Docker CP

Docker CP ist ein Befehlszeilendienstprogramm, mit dem Sie Dateien und Verzeichnisse zwischen Systemen kopieren können. Der Befehl nimmt eine sehr einfache Syntax an, die einen einfachen Workflow ermöglicht.

Die Befehlssyntax:

Docker CP [Optionen] Container: src_path dest_path |-

Das CP -Dienstprogramm kopiert die vom SRC_Path angegebenen Dateien in das dest_path. Auf diese Weise können Sie aus dem Container in das Hostsystem kopieren und umgekehrt.

Der Container kann ausgeführt oder gestoppt werden, und der Befehl führt den Kopiervorgang erfolgreich aus.

Wenn ein Verzeichnis angegeben ist, kopiert der Befehl die Dateien rekursiv in das angegebene Ziel.

Um Dateien aus dem Host -System in einen Container zu kopieren, können Sie die Syntax verwenden:

$ docker cp host_path container_id: Pfad

Dieselbe Befehlssyntax gilt, wenn Sie Dateien aus dem Container in das Hostsystem kopieren möchten:

$ docker cp container_id: src_path host_path

Lassen Sie uns sehen, wie wir dies mit praktischen Beispielen erreichen können.

Holen Sie sich laufende Behälter

Der erste Schritt besteht darin, die Namen und IDs der laufenden Container zu erhalten. Wir können dies mit dem Befehl Docker PS tun.

$ docker ps

Sobald Sie den Container und den Namen oder die ID erhalten haben, können wir fortfahren. Sie können die ID in den Spalten Container -ID und Namen erhalten.

Kopieren Sie Dateien vom Hostsystem zum Container

Angenommen, wir haben eine Datei namens Backups.Tar auf dem Desktop des Host -Systems und möchte es in den Debian11 -Container kopieren.

Wir können den Befehl ausführen:

Docker CP ~/Desktop/Backups.TAR DEBIAN11:/HOME

Der obige Befehl kopiert die Sicherungen.TAR -Datei in das Heimverzeichnis des angegebenen Containers.

Wir können überprüfen, ob die Datei existiert, indem wir den Befehl ausführen:

$ docker exec -ti debian11 /bin /bash

Der obige Befehl sollte es Ihnen ermöglichen, sich in den Container anzumelden und eine Bash -Shell hervorzubringen.

Sie können jetzt die Dateien und Verzeichnisse im Container als:

root@f657ea827600: /# ls -la /home
insgesamt 7188
DRWXR-XR-X 1 Wurzel Root 4096 Jun 7 02:09 .
DRWXR-XR-X 1 Wurzel Root 4096 Jun 7 02: 09…
-RW-R-R-1 Root Root 7348816 Jun 7 02:08 Backups.Teer

Wir können sehen, dass die Datei erfolgreich in den Container kopiert wurde.

Wenn Sie die Container -ID verwenden möchten, können Sie den Befehl ausführen:

Docker CP ~/Desktop/Backups.TAR F657EA827600:/HOME

Hinweis: Wenn eine Datei mit einem ähnlichen Namen als angegebener Zielpfad vorliegt, überschreibt der Befehl sie ohne Eingabeaufforderung.

Docker -Datei vom Container zum Host kopieren

Wir können den Befehl auch verwenden, um Dateien aus dem Container in das Hostsystem zu kopieren. Nehmen wir beispielsweise an, wir möchten die Protokolle aus dem Container in das Protokollverzeichnis im Desktop -Ordner des Hosts kopieren.

Wir können den Befehl ausführen:

$ sudo docer cp debian11:/var/log/~/desktop/logs

Im obigen Befehl mitteilen wir den Befehl docker cp, die Dateien aus dem Verzeichnis /var /Protokoll im Debian11 in das Protokoll -Verzeichnis im Host -System zu kopieren.

Wir können dies überprüfen, indem wir den Befehl ausführen:

$ ls -ls ~/desktop/Protokolle
insgesamt 72
0 DRWXR-XR-X 3 Wurzelpersonal 96 Mai 27. Mai 03:00 APT
0 -rw-rw ---- 1 Wurzelpersonal 0 27. Mai 03:00 BTMP
8 -RW-R-R-- 1 Wurzelpersonal 3232 27. Mai 03:00 Faillog
64 -rw-rw-r-- 1 Wurzelpersonal 29896 27. Mai 03:00 Lastlog
0 -rw-rw-r-- 1 Root-Mitarbeiter 0 27. Mai 03:00 WTMP

Docker CP Preserve Attribute

Sie werden feststellen, dass Docker, sobald wir eine Datei in und vom Host -System kopieren, die Attribute wie Berechtigungen, UIDs usw. nicht bewahrt haben.

Wir können dies lösen, indem wir das Flag -A -Flag im Befehl Docker CP anhängen.

$ docker cp -a host_path Container: Pfad
$ Docker CP -A Container: Path Host_path

Ein Beispiel ist wie gezeigt:

sudo docker cp -a debian11:/var/log/~/desktop/logs

Wir können sehen, dass die Berechtigungen einem der kopierten Dateien im Container ähnlich sind.

Abschluss

In diesem Tutorial haben Sie erfahren.

Danke fürs Lesen!!