Wie man Dateien in und aus einem Docker-Container überträgt

Verwenden Sie den Docker- docker cpBefehl, um Dateien oder Verzeichnisse zwischen Ihrem lokalen Rechner und einem Container zu kopieren. Er funktioniert in beide Richtungen, kopiert Verzeichnisse rekursiv und kann sowohl auf laufende als auch auf gestoppte Container zugreifen. Sie müssen weder eine Shell im Container öffnen noch ein TAR-Archiv für einen einfachen Kopiervorgang erstellen.

Die grundlegende Syntax lautet : `cp` docker cp SOURCE DESTINATION. Setzen Sie den Containernamen oder die Container-ID vor einen Doppelpunkt, um einen Containerpfad anzugeben: ` docker cp LOCAL_PATH CONTAINER:CONTAINER_PATHcp` kopiert in einen Container, `cp` docker cp CONTAINER:CONTAINER_PATH LOCAL_PATHkopiert aus einem Container. Die Pfad- und Verzeichnisregeln sind in der Docker -Referenz zu `docker cp` dokumentiert.

1. Containernamen oder -ID ermitteln

Führen Sie diesen Befehl in einem Terminal aus, in dem Docker-Befehle die Docker Engine erreichen können:

docker ps -a

docker psDie Liste zeigt laufende Container an; durch Hinzufügen -awerden auch gestoppte Container angezeigt. Verwenden Sie den Wert in der NAMESSpalte oder eine Container-ID in den folgenden Befehlen. Ein Name wie „ webcontainer“ lässt sich leicht wiederverwenden; eine ID ist ein eindeutiger Bezeichner, wenn Sie Container unterscheiden müssen. Sie können die angezeigten Felder mit `docker ps` / `docker container ls` überprüfen .

Terminalausgabe von docker ps -a, die einen laufenden Container namens web und seine kurze Container-ID anzeigt.
Verwenden Sie den Containernamen oder die Container-ID, die von angezeigt wird docker ps -a.

2. Kopieren Sie eine Datei von Ihrem Computer in den Container

Führen Sie docker cpden Befehl auf dem Rechner aus, dessen Dateien Sie kopieren möchten. Kopieren Sie beispielsweise aus einem Projektordner, der die Datei enthält report.csv, diese /tmpin den Container mit dem Namen web:

docker cp ./report.csv web:/tmp/report.csv

Ersetzen Sie ./report.csv<lokaler Dateipfad> durch den lokalen Dateipfad, web<Containername oder -ID> durch den Namen oder die ID Ihres Containers und /tmp/report.csv<Zielpfad> durch den Zielpfad innerhalb des Containers. Containerpfade werden vom Stammverzeichnis des Containers aus interpretiert, daher ist der führende Schrägstrich optional. Wenn das Zielverzeichnis bereits existiert, platziert Docker die Datei dort unter Verwendung des Quelldateinamens.

Terminalbefehl zum Kopieren der lokalen report.csv-Datei in den Webcontainer unter /tmp/report.csv.
Dieser Befehl kopiert eine Hostdatei in den Container.

Docker kopiert Verzeichnisse rekursiv. Falls diese /etc/app/bereits existieren, fügt dieser Befehl sie configdarin ein:

docker cp ./config web:/etc/app/

Um nur den Inhalt von configin zu kopieren /etc/app/, fügen Sie /.am Ende des Quellpfads Folgendes ein:

Terminalbefehl zum Kopieren des Inhalts des lokalen Konfigurationsverzeichnisses in das Verzeichnis /etc/app innerhalb des Webcontainers.
Das /.Suffix bedeutet, dass der Verzeichnisinhalt kopiert wird, anstatt das Quellverzeichnis einzubetten.
docker cp ./config/. web:/etc/app/

Docker erstellt keine fehlenden übergeordneten Verzeichnisse. Erstellen Sie zuerst das übergeordnete Verzeichnis des Ziels. Um einen fehlenden Ordner in einem laufenden Container zu erstellen, führen Sie `docker build` aus docker exec web mkdir -p /etc/appund kopieren Sie anschließend die Dateien. `docker build` docker execerfordert einen laufenden Container; `docker build` docker cpnicht.

3. Kopieren Sie eine Datei aus dem Container auf Ihren Computer.

Um eine Datei abzurufen, kehren Sie die Reihenfolge von Quell- und Zielordner um. Erstellen Sie zuerst den lokalen Zielordner und kopieren Sie dann eine Protokolldatei aus dem Container:

mkdir -p ./backup
docker cp web:/var/log/app.log ./backup/
Terminalbefehl zum Abrufen der Datei app.log aus /var/log innerhalb des Webcontainers in ein lokales Sicherungsverzeichnis.
Der lokale Zielordner muss vor dem Kopieren existieren.

Sie können ein Verzeichnis auf die gleiche Weise abrufen. Fügen Sie /.dem Quellpfad des Containers hinzu, um dessen Inhalt direkt in ein vorhandenes lokales Verzeichnis zu kopieren:

docker cp web:/var/log/app/. ./backup/

Docker kann Dateien aus einem gestoppten Container kopieren, was nützlich ist, um Protokolle oder Konfigurationen nach dem Beenden eines Prozesses zu sammeln.

Docker Compose verwenden

Wenn Ihr Projekt Compose verwendet, nutzen Sie den Dienstnamen anstelle docker compose cpder Container-ID. Kopieren Sie beispielsweise eine lokale Datei in einen Dienst mit dem Namen web:

docker compose cp ./report.csv web:/tmp/report.csv

Um in die andere Richtung zu kopieren, kehren Sie die Pfade um:

docker compose cp web:/var/log/app.log ./backup/

In der offiziellen Docker Compose cp-Referenz finden Sie Optionen wie die Auswahl einer Replik, wenn ein Dienst mehrere Container hat.

Berechtigungen und dauerhafte Speicherung

Standardmäßig gehören Dateien, die in einen Container kopiert werden, dem Root-Benutzer und der zugehörigen Gruppe; Dateien, die auf Ihren Computer kopiert werden, gehören dem Benutzer, der Docker ausführt. Berechtigungen bleiben nach Möglichkeit erhalten. Verwenden Sie die Option, -aum die Quell-UID und -GID beizubehalten. Kann eine Anwendung eine Datei nicht lesen, überprüfen Sie deren Ziel und Eigentümerschaft, anstatt dem Container privilegierte Berechtigungen zu erteilen.

Dateien im beschreibbaren Bereich eines Containers werden mit dem Container gelöscht. Für Daten, die dauerhaft gespeichert werden müssen, verwenden Sie ein Docker-Volume oder eine Bind-Mount-Verbindung. Volumes eignen sich für persistente Containerdaten; Bind-Mounts ermöglichen Host und Container den Zugriff auf dieselben Dateien. Wenn Sie Daten in einen Pfad kopieren, der durch eine Mount-Verbindung abgedeckt ist, ändern Sie die eingebundenen Daten. Überprüfen Sie daher vorher das Zielverzeichnis. Weitere Informationen finden Sie in der Docker-Dokumentation zu Volumes und Bind-Mounts .

Schnelle Fehlerbehebung

  • „Kein solcher Container“: Führen Sie den Befehl aus docker ps -aund überprüfen Sie den Containernamen oder die Container-ID.
  • „Datei oder Verzeichnis nicht gefunden“: Überprüfen Sie den Quellpfad und stellen Sie sicher, dass das übergeordnete Verzeichnis des Ziels existiert. Containerpfade beginnen bei /.
  • Der Ordner landete eine Ebene tiefer als erwartet: Verwenden Sie den nachfolgenden Befehl /., um nur den Verzeichnisinhalt zu kopieren.
  • Zugriff verweigert: Überprüfen Sie, ob Ihr Konto Docker verwenden darf und ob der Anwendungsbenutzer Lese- und Schreibrechte für das Zielverzeichnis hat. Unter Linux verwenden Sie Docker sudonur, wenn die Docker-Zugriffsrichtlinie Ihres Systems dies erfordert.
  • Nach der Bereinigung gehen Dateien verloren: Wichtige Daten sollten in einem Volume oder per Bind-Mount gespeichert werden, nicht nur in der beschreibbaren Schicht des Containers.

Einen Kommentar hinterlassen

So ändern Sie die Webcam-Einstellungen unter Linux mit Cameractrls

So ändern Sie die Webcam-Einstellungen unter Linux mit Cameractrls

Ändern Sie die Webcam-Einstellungen unter Linux mit Cameractrls: Optimieren Sie Belichtung, Farbe, Flimmerreduzierung und andere unterstützte Steuerelemente und prüfen Sie anschließend die kompatiblen Videomodi.

So installieren Sie PhpStorm unter Linux: Toolbox, Tar.gz, Snap und AUR

So installieren Sie PhpStorm unter Linux: Toolbox, Tar.gz, Snap und AUR

Installieren Sie PhpStorm unter Linux mit der JetBrains Toolbox oder dem eigenständigen tar.gz-Archiv, zusätzlich zu den Snap- und Arch-AUR-Optionen. Java ist bereits enthalten.

Wie man unter Linux mit GIMP ein Bild ausschneidet

Wie man unter Linux mit GIMP ein Bild ausschneidet

Unter Linux mit GIMP den Fotohintergrund entfernen: Motiv nachzeichnen, ausgewählten Hintergrund löschen, Transparenz beibehalten und wiederverwendbare PNG-Datei exportieren.

So richten Sie Dual-Panels unter XFCE 4 ein

So richten Sie Dual-Panels unter XFCE 4 ein

Erstellen Sie für jeden Bildschirm ein separates XFCE 4-Panel, weisen Sie das zweite Panel dem richtigen Ausgang zu, positionieren und skalieren Sie es und fügen Sie die benötigten Launcher und Statusanzeigen hinzu.

So installieren Sie Cisco Packet Tracer unter Linux

So installieren Sie Cisco Packet Tracer unter Linux

Laden Sie Cisco Packet Tracer 9.0.1 für Ubuntu 64-Bit herunter, installieren Sie das DEB-Paket mit APT, akzeptieren Sie die Lizenz im Terminal und melden Sie sich an, um ein Lab zu starten.

Wie man eine CD-ROM unter Linux als ISO-Datei sichert

Wie man eine CD-ROM unter Linux als ISO-Datei sichert

Erstellen Sie unter Linux mit GNOME Disks oder dd ein CD-ROM-ISO. Identifizieren Sie das optische Laufwerk, überwachen Sie den Kopiervorgang, überprüfen Sie das Image und erkennen Sie, wann eine beschädigte oder Audio-Disc ein anderes Tool benötigt.

FlightGear kostenlos herunterladen: Offizielle Installationsanleitung

FlightGear kostenlos herunterladen: Offizielle Installationsanleitung

Laden Sie FlightGear kostenlos von der offiziellen Website herunter. Vergleichen Sie die Pakete für Windows, macOS und Linux, installieren Sie die Datendateien und starten Sie Ihren ersten Flug.

Google Tasks Desktop-Anwendung: So verwenden Sie sie auf einem Computer

Google Tasks Desktop-Anwendung: So verwenden Sie sie auf einem Computer

Öffnen Sie Google Tasks in einem Browser, fügen Sie eine Chrome-Verknüpfung oder einen App-ähnlichen Start hinzu und verwalten Sie terminierte Aufgaben über Kalender und Gmail.

OKSampler: Ein kostenloser, einfacher Musik-Sampler für Keyboard-Beats

OKSampler: Ein kostenloser, einfacher Musik-Sampler für Keyboard-Beats

OKSampler ordnet MP3-Dateien Tastaturtasten zu und ermöglicht Audioschleifen. Erfahren Sie, was die ältere Freeware kann, wo ihre alten Funktionen enden und worauf Sie vor dem Herunterladen achten sollten.

So installieren Sie Wireshark unter Linux: Ubuntu, Fedora, Arch und mehr

So installieren Sie Wireshark unter Linux: Ubuntu, Fedora, Arch und mehr

Installieren Sie Wireshark auf Ubuntu, Debian, Fedora, Arch oder openSUSE mit den aktuellen Paketbefehlen und konfigurieren Sie anschließend die Live-Paketerfassung sicher.