CodeGym /Kurse /Docker SELF /Grundlagen der Datenspeicherung in Docker

Grundlagen der Datenspeicherung in Docker

Docker SELF
Level 19 , Lektion 0
Verfügbar

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

  1. Isolierung vom Host: Volumes werden in einem speziellen Verzeichnis auf dem Host gespeichert, das von Docker verwaltet wird, was ihre Isolierung sicherstellt.
  2. Einfache Verwaltung: Docker bietet praktische Befehle zum Erstellen, Löschen und Verwalten von Volumes.
  3. 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:

Terminal

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.

Terminal

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:

  1. Direkter Zugriff auf Host-Dateien: Container können direkt auf Dateien und Verzeichnisse des Hosts zugreifen.
  2. Bequemlichkeit bei der Entwicklung: Entwickler können Dateien auf dem Host leicht ändern und diese Änderungen in Containern in Echtzeit sehen.
  3. 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:

Terminal

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:

Terminal

docker volume create db_data

Starten eines Datenbank-Containers mit einem Volume:

Terminal

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:

Terminal

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.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION