Verzeichnis vom Host in Docker-Container kopieren

DockerDockerBeginner
Jetzt üben

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

Einführung

Docker-Container sind zu einem unverzichtbaren Werkzeug für Entwickler und IT-Profis geworden, da sie eine konsistente und zuverlässige Möglichkeit bieten, Anwendungen zu verpacken und bereitzustellen. In diesem Tutorial werden wir den Prozess des Kopierens von Verzeichnissen vom Host-Computer in einen Docker-Container untersuchen, um Ihnen die effiziente Verwaltung von Dateien und Daten in Ihrer containerisierten Umgebung zu ermöglichen.

Einführung in Docker-Container

Docker ist eine beliebte Open-Source-Plattform, die Entwicklern ermöglicht, Anwendungen in einer containerisierten Umgebung zu erstellen, bereitzustellen und auszuführen. Container sind leichte, eigenständige und selbsterhaltende Einheiten, die eine Anwendung und ihre Abhängigkeiten verpacken und so eine konsistente und zuverlässige Ausführung in verschiedenen Umgebungen gewährleisten.

Was ist ein Docker-Container?

Ein Docker-Container ist eine standardisierte Softwareeinheit, die den Code, die Abhängigkeiten und die Konfiguration einer Anwendung in einem einzigen, portablen und reproduzierbaren Paket zusammenfasst. Container werden aus Docker-Images erstellt, die als Blaupause für den Container dienen. Container sind vom Host-System und anderen Containern isoliert und bieten eine konsistente und zuverlässige Laufzeitumgebung.

Vorteile der Verwendung von Docker-Containern

  • Portabilität: Docker-Container können konsistent auf verschiedenen Betriebssystemen und Cloud-Umgebungen ausgeführt werden, wodurch sichergestellt wird, dass Ihre Anwendung unabhängig von der zugrunde liegenden Infrastruktur gleich funktioniert.
  • Skalierbarkeit: Container lassen sich leicht skalieren, um den sich ändernden Anforderungen Ihrer Anwendung gerecht zu werden, was die Verwaltung und Optimierung der Ressourcenverwendung vereinfacht.
  • Effizienz: Container sind leichtgewichtig und teilen das Betriebssystem des Host-Systems, wodurch der Overhead und der Ressourcenverbrauch im Vergleich zu traditionellen virtuellen Maschinen reduziert werden.
  • Konsistenz: Docker-Container bieten eine konsistente und vorhersehbare Laufzeitumgebung, wodurch das Problem „funktioniert auf meinem Rechner“ reduziert und die Verwaltung und Wartung Ihrer Anwendungen vereinfacht wird.

Docker-Architektur

Docker folgt einer Client-Server-Architektur, bei der der Docker-Client mit dem Docker-Daemon (dem Server) kommuniziert, um Docker-Befehle auszuführen. Der Docker-Daemon ist für die Verwaltung von Docker-Images, -Containern, -Netzwerken und -Volumes verantwortlich.

graph LD subgraph Docker-Architektur Client -- Docker API --> Daemon Daemon -- Docker Engine --> Images Daemon -- Docker Engine --> Container Daemon -- Docker Engine --> Netzwerke Daemon -- Docker Engine --> Volumes end

Durch das Verständnis der grundlegenden Konzepte von Docker-Containern und ihrer Architektur sind Sie besser gerüstet, mit Docker zu arbeiten und seine Vorteile in Ihren Anwendungsentwicklungs- und Bereitstellungsprozessen zu nutzen.

Kopieren von Dateien vom Host in den Container

Das Kopieren von Dateien vom Host-System (Ihrem lokalen Rechner) in einen Docker-Container ist eine häufige Aufgabe bei der Arbeit mit Docker. Dies ist oft notwendig, wenn Sie Ihrer Anwendung zusätzliche Dateien, Konfigurationen oder Daten zur Verfügung stellen müssen, die nicht im Image des Containers enthalten sind.

Der Befehl docker cp

Der Befehl docker cp wird verwendet, um Dateien oder Verzeichnisse zwischen dem Host-System und einem laufenden Docker-Container zu kopieren. Die Syntax des Befehls lautet wie folgt:

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

Dabei gilt:

  • SRC_PATH ist der Pfad zur Datei oder zum Verzeichnis auf dem Host-System.
  • CONTAINER ist der Name oder die ID des Docker-Containers.
  • DEST_PATH ist der Pfad innerhalb des Docker-Containers, an den die Datei oder das Verzeichnis kopiert werden soll.

Hier ist ein Beispiel, wie Sie den Befehl docker cp verwenden, um ein Verzeichnis vom Host-System in einen Docker-Container zu kopieren:

## Kopieren Sie das Verzeichnis "my-files" vom Host in das Verzeichnis "/app" im Container
docker cp ./my-files mycontainer:/app

Kopieren von Dateien während der Containererstellung

Alternativ können Sie Dateien auch während des Containererstellungsprozesses vom Host-System in einen Docker-Container kopieren. Dies geschieht mithilfe der COPY-Anweisung im Dockerfile, die die zu kopierenden Dateien oder Verzeichnisse aus dem Build-Kontext (dem Verzeichnis, in dem sich das Dockerfile befindet) in das Dateisystem des Containers spezifiziert.

Hier ist ein Beispiel für ein Dockerfile, das ein Verzeichnis vom Host-System in den Container kopiert:

## Dockerfile
FROM ubuntu:22.04
COPY ./my-files /app
CMD ["bash"]

In diesem Beispiel kopiert die COPY-Anweisung das Verzeichnis my-files aus dem Build-Kontext in das Verzeichnis /app innerhalb des Containers.

Durch das Verständnis des Kopiervorgangs von Dateien vom Host in einen Docker-Container können Sie die notwendigen Ressourcen für Ihre containerisierten Anwendungen effektiver verwalten und verteilen.

Praktische Anwendungsfälle und Beispiele

Das Kopieren von Dateien vom Host in einen Docker-Container kann in verschiedenen Szenarien nützlich sein. Hier sind einige praktische Anwendungsfälle und Beispiele:

Bereitstellung von Konfigurationsdateien

Ein gängiger Anwendungsfall ist die Bereitstellung von Konfigurationsdateien für Ihre containerisierte Anwendung. Beispielsweise könnten Sie eine Konfigurationsdatei haben, die Datenbankverbindungsdetails, Umgebungsvariablen oder andere Einstellungen enthält, die für Ihre Anwendung angepasst werden müssen.

## Kopieren einer Konfigurationsdatei vom Host in den Container
docker cp ./my-app-config.yaml mycontainer:/app/config/

Einbringen von Daten oder Assets

Ein weiterer Anwendungsfall ist das Einbringen von Daten oder Assets in einen Container. Dies kann Folgendes umfassen:

  • Datenbank-Seed-Daten
  • Mediendateien (Bilder, Videos usw.)
  • Statische Webinhalte
## Kopieren eines Verzeichnisses mit statischen Webinhalten vom Host in den Container
docker cp ./web-content mycontainer:/var/www/html/

Debugging und Fehlerbehebung

Das Kopieren von Dateien vom Host in den Container kann auch für Debugging- und Fehlerbehebungszwecke nützlich sein. Beispielsweise möchten Sie möglicherweise Protokolldateien oder Diagnosetools in den Container kopieren, um Probleme zu untersuchen.

## Kopieren einer Protokolldatei vom Container zum Host zur Analyse
docker cp mycontainer:/app/logs/app.log ./

Continuous Integration und Deployment

In einem Continuous Integration (CI) oder Continuous Deployment (CD)-Pipeline könnten Sie möglicherweise Build-Artefakte, Testberichte oder andere Dateien vom Host-System in den Container kopieren, um sie weiter zu verarbeiten oder bereitzustellen.

## Kopieren von Build-Artefakten vom Host in den Container während einer CI/CD-Pipeline
docker cp ./build-artifacts mycontainer:/app/dist/

Durch das Verständnis dieser praktischen Anwendungsfälle und Beispiele können Sie den Befehl docker cp und die COPY-Anweisung in Ihren Docker-basierten Workflows und Anwendungen effektiver nutzen.

Zusammenfassung

Am Ende dieses Tutorials verfügen Sie über ein fundiertes Verständnis, wie Verzeichnisse von Ihrem Host-Computer in einen Docker-Container kopiert werden. Sie lernen praktische Anwendungsfälle und Beispiele kennen, die Ihnen helfen, Ihren Docker-Workflow zu optimieren und den Prozess der Entwicklung containerisierter Anwendungen zu verbessern.