Dateien von Docker-Container auf Host übertragen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In der Welt der Containerisierung ist die Fähigkeit, Dateien zwischen einem Docker-Container und dem Host-System zu übertragen, eine entscheidende Fertigkeit. Dieses Tutorial führt Sie durch den Prozess der Dateiübertragung von einem Docker-Container auf den Host und behandelt die grundlegenden Konzepte sowie praxisnahe Beispiele, um Ihnen die Beherrschung des Befehls "docker cp" zu ermöglichen.

Docker-Container verstehen

Docker ist eine beliebte Containerisierungsplattform, die es Entwicklern ermöglicht, ihre Anwendungen und Abhängigkeiten in isolierte, portablen und reproduzierbare Umgebungen, sogenannte Container, zu verpacken. Diese Container lassen sich einfach bereitstellen, skalieren und verwalten, was den Entwicklungs- und Bereitstellungsprozess effizienter und konsistenter macht.

Was ist ein Docker-Container?

Ein Docker-Container ist ein leichtgewichtiges, eigenständiges und ausführbares Softwarepaket, das alles enthält, was zum Ausführen einer Anwendung benötigt wird – den Code, die Laufzeitumgebung, Systemtools, Bibliotheken und Einstellungen. Container sind voneinander und vom Host-Betriebssystem isoliert, wodurch sichergestellt wird, dass die Anwendung unabhängig von der Umgebung konsistent läuft.

Docker-Architektur

Docker verwendet eine Client-Server-Architektur, bei der der Docker-Client mit dem Docker-Daemon kommuniziert. Der Docker-Daemon ist für das Erstellen, Ausführen und Verwalten der Container verantwortlich. Der Docker-Daemon läuft auf dem Host-System, während der Client auf demselben oder einem entfernten System ausgeführt werden kann.

graph LR A[Docker Client] -- Kommuniziert mit --> B[Docker Daemon] B -- Verwaltet --> C[Docker Container] B -- Verwaltet --> D[Docker Images] B -- Läuft auf --> E[Host-System]

Vorteile von Docker-Containern

  • Portabilität: Container können in verschiedenen Umgebungen, vom Entwickler-Laptop bis zum Produktionsserver, konsistent ausgeführt werden, wodurch sichergestellt wird, dass die Anwendung sich gleich verhält.
  • Skalierbarkeit: Container lassen sich einfach hoch- oder herunter skalieren, sodass Anwendungen erhöhten Traffic oder Lasten bewältigen können.
  • Effizienz: Container sind leichtgewichtig und teilen den Host-Betriebssystemkern, wodurch der Overhead im Vergleich zu traditionellen virtuellen Maschinen reduziert wird.
  • Isolation: Container sind voneinander und vom Host-System isoliert, was die Sicherheit verbessert und Konflikte zwischen Anwendungen verhindert.
  • Reproduzierbarkeit: Container lassen sich einfach neu erstellen und bereitstellen, wodurch sichergestellt wird, dass die Anwendungs-Umgebung in verschiedenen Phasen des Entwicklungs- und Bereitstellungsprozesses konsistent ist.

Docker-Images und -Container

Docker-Images sind die Blaupausen für die Erstellung von Docker-Containern. Sie werden mithilfe einer Dockerfile erstellt, einer Textdatei, die die Schritte zur Erstellung des Images definiert. Docker-Container sind die laufenden Instanzen von Docker-Images und können mit Docker-Befehlen gestartet, gestoppt und verwaltet werden.

graph LR A[Dockerfile] -- Erstellt --> B[Docker Image] B -- Läuft als --> C[Docker Container]

Mit dem Verständnis der grundlegenden Konzepte von Docker-Containern können Sie nun lernen, wie Dateien zwischen einem Docker-Container und dem Host-System übertragen werden.

Übertragen von Dateien zwischen Docker-Container und Host

Das Übertragen von Dateien zwischen einem Docker-Container und dem Host-System ist eine häufige Aufgabe während der Entwicklung, Tests oder Bereitstellung. Docker bietet verschiedene Möglichkeiten, dies zu erreichen, wobei die gewählte Methode von Ihrem spezifischen Anwendungsfall abhängt.

Kopieren von Dateien vom Container zum Host

Um Dateien von einem Docker-Container auf das Host-System zu kopieren, können Sie den Befehl docker cp verwenden. Dieser Befehl ermöglicht es Ihnen, Dateien oder Verzeichnisse von einem Container auf den Host oder umgekehrt zu kopieren.

## Kopieren einer Datei vom Container zum Host
docker cp my_container:/path/to/file.txt /host/path/

## Kopieren eines Verzeichnisses vom Container zum Host
docker cp my_container:/path/to/directory /host/path/

Mounten von Host-Verzeichnissen als Volumes

Eine weitere Möglichkeit, Dateien zwischen einem Docker-Container und dem Host zu übertragen, besteht darin, ein Host-Verzeichnis als Volume im Container zu mounten. Dadurch kann der Container direkt auf die Dateien auf dem Host-System zugreifen.

## Ausführen eines Containers mit einem gemounteten Volume
docker run -v /host/path:/container/path my_image

## Der Container kann nun auf die Dateien im Verzeichnis /host/path zugreifen.

Bind Mounts

Bind Mounts sind eine Art Volume, das ein Verzeichnis auf dem Host direkt mit einem Verzeichnis im Container abbildet. Dies ermöglicht eine bidirektionale Dateiübertragung zwischen Host und Container.

## Ausführen eines Containers mit einem Bind Mount
docker run -v /host/path:/container/path:rw my_image

## Der Container kann Dateien im Verzeichnis /host/path lesen und schreiben.

Volumes

Docker Volumes sind eine weitere Möglichkeit, Daten in einem Container zu verwalten. Volumes werden von Docker verwaltet und können verwendet werden, um Daten zwischen Containern und dem Host zu speichern und zu übertragen.

## Erstellen eines Volumes
docker volume create my_volume

## Ausführen eines Containers mit einem Volume
docker run -v my_volume:/container/path my_image

## Der Container kann auf die Dateien im Volume my_volume zugreifen.

Durch das Verständnis dieser verschiedenen Methoden zum Übertragen von Dateien zwischen einem Docker-Container und dem Host können Sie die Methode auswählen, die Ihren spezifischen Anwendungsfall und Anforderungen am besten entspricht.

Anwendungsfälle und Beispiele aus der Praxis

Die Übertragung von Dateien zwischen einem Docker-Container und dem Host-System hat vielfältige praktische Anwendungen. Hier sind einige Beispiele, die zeigen, wie Sie diese Funktionalität nutzen können:

Logging und Debugging

Ein gängiger Anwendungsfall ist das Kopieren von Logdateien aus einem laufenden Container auf das Host-System zur Analyse und Fehlersuche. Dies ist besonders nützlich bei der Behebung von Problemen in einer Produktionsumgebung.

## Kopieren der Logdatei vom Container zum Host
docker cp my_container:/app/logs/app.log /host/path/

Datenspeicherung

Bei der Arbeit mit zustandsabhängigen Anwendungen müssen Sie möglicherweise Daten außerhalb des Containers speichern. Durch das Mounten eines Host-Verzeichnisses als Volume stellen Sie sicher, dass die Daten auf dem Host gespeichert werden und auch zugänglich sind, selbst wenn der Container gestoppt oder gelöscht wird.

## Ausführen eines Containers mit einem gemounteten Volume zur Datenspeicherung
docker run -v /host/path/data:/container/path/data my_image

Sicherung und Wiederherstellung

Ein weiterer Anwendungsfall ist die Sicherung und Wiederherstellung von Daten aus einem Container. Sie können den Befehl docker cp verwenden, um wichtige Dateien oder Verzeichnisse vom Container auf den Host zu kopieren und diese Sicherungen dann bei Bedarf zur Wiederherstellung der Daten zu verwenden.

## Kopieren eines Verzeichnisses vom Container zum Host zur Sicherung
docker cp my_container:/app/data /host/path/backup/

Entwicklung und Tests

Während des Entwicklungs- und Testprozesses müssen Sie möglicherweise Dateien zwischen dem Host und dem Container übertragen, z. B. Quellcode, Konfigurationsdateien oder Testdaten. Die verschiedenen von Docker bereitgestellten Dateiübertragungsmethoden können diesen Workflow optimieren.

## Kopieren einer Datei vom Host in den Container
docker cp /host/path/file.txt my_container:/app/

Mit dem Verständnis dieser Anwendungsfälle und Beispiele können Sie den Wert der Dateiübertragung zwischen einem Docker-Container und dem Host-System besser einschätzen und wie dies Ihre Entwicklungs-, Bereitstellungs- und Wartungsabläufe verbessern kann.

Zusammenfassung

Am Ende dieses Tutorials verfügen Sie über ein umfassendes Verständnis der Übertragung von Dateien von einem Docker-Container auf den Host-Computer mithilfe des Befehls "docker cp". Sie lernen verschiedene Anwendungsfälle und praktische Beispiele kennen, um Dateien nahtlos in Ihren Docker-basierten Projekten zu verwalten.