1.1 Volumes
Die Speicherung von Daten in Docker ist ein wichtiger Bestandteil der Arbeit mit Containern. Container an sich sind flüchtig, was bedeutet, dass die Daten in ihnen nach dem Stoppen oder Löschen des Containers verloren gehen. Um Daten zwischen Starts zu speichern und eine langfristige Speicherung zu gewährleisten, bietet Docker zwei Haupttechnologien: Volumes und Bind Mounts.
Volumes
Volumes sind von Docker verwaltete Ressourcen zur Speicherung von Daten. Sie existieren unabhängig vom Lebenszyklus der Container, was ihre Verwendung zur langfristigen Datenspeicherung ermöglicht. Volumes können von Docker erstellt und verwaltet werden, was eine bequeme Möglichkeit zur Speicherung von Daten außerhalb von Containern bietet.
Vorteile der Verwendung von Volumes
- Isolierung vom Host: Volumes werden in einem speziellen Verzeichnis auf dem Host gespeichert, das von Docker verwaltet wird, was ihre Isolierung sicherstellt.
- Einfache Verwaltung: Docker bietet praktische Befehle zum Erstellen, Löschen und Verwalten von Volumes.
- Kompatibilität und Portabilität: Volumes können leicht zwischen verschiedenen Hosts verschoben und mit verschiedenen Containern verwendet werden.
Beispiel für die Erstellung und Verwendung von Volumes
Erstellen eines Volumes:
docker volume create my_volume
Verwendung eines Volumes in einem Container:
In diesem Beispiel wird das Volume my_volume
in das Verzeichnis /data
innerhalb des Containers my_container
eingebunden.
docker run -d --name my_container -v my_volume:/data nginx
1.2 Gebundene Verzeichnisse (Bind Mounts)
Gebundene Verzeichnisse erlauben es, bestimmte Host-Verzeichnisse in Containern zu mounten. Dadurch können Container auf Dateien und Verzeichnisse des Hosts zugreifen, was besonders für Entwicklung und Tests praktisch ist, wenn mit lokalen Dateien gearbeitet werden muss.
Vorteile der Verwendung von gebundenen Verzeichnissen:
- Direkter Zugriff auf Host-Dateien: Container können direkt auf Dateien und Verzeichnisse des Hosts zugreifen.
- Bequemlichkeit bei der Entwicklung: Entwickler können Dateien auf dem Host leicht ändern und diese Änderungen in Containern in Echtzeit sehen.
- Flexibilität: Gebundene Verzeichnisse können beliebige Verzeichnisse auf dem Host sein und bieten so eine große Flexibilität bei der Datenverwaltung.
Beispiel für die Verwendung von gebundenen Verzeichnissen
Start eines Containers mit einem gebundenen Verzeichnis:
docker run -d --name my_container -v /path/on/host:/data nginx
In diesem Beispiel wird das Verzeichnis /path/on/host
auf dem Host in das Verzeichnis /data
innerhalb des Containers my_container
gemountet.
Vergleich zwischen Volumes und gebundenen Verzeichnissen:
Eigenschaft | Volumes | Gebundene Verzeichnisse |
---|---|---|
Datenspeicherung | Von Docker verwaltet | Vom Benutzer verwaltet |
Isolation | Isoliert vom Dateisystem des Hosts | Verwendet das Dateisystem des Hosts |
Leistung | Für Docker optimiert | Abhängig vom Dateisystem des Hosts |
Anwendbarkeit | Langfristige Datenspeicherung | Entwicklung und Tests |
1.3 Praktische Beispiele
Praktische Anwendungsbeispiele
Beispiel 1: Verwendung von Volumes für eine Datenbank
Um eine langfristige Speicherung von Daten in einer Datenbank zu gewährleisten, können Volumes verwendet werden.
Erstellung eines Volumes:
docker volume create db_data
Starten eines Datenbank-Containers mit einem Volume:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
Beispiel 2: Verwendung von gebundenen Verzeichnissen für Webentwicklung
Für die Entwicklung einer Webanwendung können gebundene Verzeichnisse verwendet werden, damit Änderungen in lokalen Dateien sofort im Container sichtbar sind.
Starten eines Containers mit einem gebundenen Verzeichnis:
docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx
In diesem Beispiel wird das aktuelle Arbeitsverzeichnis my_website
in das Verzeichnis /usr/share/nginx/html
des Containers nginx
eingebunden.
GO TO FULL VERSION