Docker Volumes und persistente Datenspeicherung: Ein umfassendes Tutorial

Eine der größten Stärken von Docker ist die Containerisierung von Anwendungen. Doch Container haben von Natur aus einen flüchtigen Speicher – sobald der Container gelöscht wird, gehen alle Daten verloren. Hier kommen Docker Volumes ins Spiel: Sie ermöglichen die persistente Datenspeicherung, auch wenn Container gelöscht oder neugestartet werden. In diesem Blogbeitrag erfährst du, wie Docker Volumes funktionieren und wie du sie zur Datenspeicherung nutzen kannst.

Inhalt

  1. Einführung in Docker Volumes
  2. Warum Volumes verwenden?
  3. Volumes erstellen und verwalten
  4. Volumes in Containern verwenden
  5. Daten zwischen Containern teilen
  6. Praktische Beispiele mit Volumes
  7. Bereinigung und Management von Volumes

1. Einführung in Docker Volumes

Docker Volumes sind die bevorzugte Methode zur Speicherung von Daten in Docker. Sie bieten eine einfache und flexible Möglichkeit, Daten auf dem Host-System zu speichern, die auch nach dem Löschen oder Neustart eines Containers erhalten bleiben. Volumes werden außerhalb des Containers verwaltet, was sie von anderen Speichermethoden wie Bind Mounts unterscheidet.


2. Warum Volumes verwenden?

Volumes bieten mehrere Vorteile:

  • Persistente Speicherung: Daten bleiben erhalten, selbst wenn der Container gelöscht wird.
  • Isolierung vom Container: Volumes sind unabhängig vom Lebenszyklus des Containers. Sie können an mehrere Container angehängt werden.
  • Daten teilen: Volumes erlauben das einfache Teilen von Daten zwischen Containern.
  • Einfache Verwaltung: Volumes sind plattformübergreifend und lassen sich leicht verwalten.

3. Volumes erstellen und verwalten

Um ein neues Volume zu erstellen, kannst du den Befehl docker volume create verwenden:

docker volume create mein-volume

Du kannst alle vorhandenen Volumes auf deinem System mit folgendem Befehl anzeigen:

docker volume ls

Möchtest du detaillierte Informationen zu einem bestimmten Volume erhalten, kannst du den folgenden Befehl verwenden:

docker volume inspect mein-volume

4. Volumes in Containern verwenden

Um ein Volume in einem Container zu verwenden, nutzt du die Option --mount oder -v beim Start eines Containers. Hier ist ein Beispiel:

docker run -d --name webserver -v mein-volume:/usr/share/nginx/html nginx

In diesem Beispiel wird das Volume mein-volume im Verzeichnis /usr/share/nginx/html des Nginx-Containers eingebunden. Alle Daten, die der Container in diesem Verzeichnis schreibt, werden im Volume gespeichert und bleiben auch nach dem Stoppen oder Löschen des Containers erhalten.


5. Daten zwischen Containern teilen

Ein nützlicher Anwendungsfall für Volumes ist das Teilen von Daten zwischen mehreren Containern. Angenommen, du hast zwei Container, die auf dieselben Daten zugreifen müssen. Du kannst einfach dasselbe Volume in beiden Containern verwenden:

docker run -d --name app1 -v mein-volume:/data alpine
docker run -d --name app2 -v mein-volume:/data alpine

Beide Container (app1 und app2) haben jetzt Zugriff auf das Volume mein-volume, das unter dem Verzeichnis /data eingebunden ist. Änderungen in diesem Verzeichnis werden sofort von beiden Containern geteilt.


6. Praktische Beispiele mit Volumes

Beispiel 1: MySQL mit einem Volume

Ein häufiger Anwendungsfall für Volumes ist die Nutzung mit Datenbanken. Im folgenden Beispiel nutzen wir ein Volume, um die Daten eines MySQL-Containers persistent zu speichern:

docker run -d --name mysql-db -e MYSQL_ROOT_PASSWORD=my-secret-pw -v mysql-data:/var/lib/mysql mysql

In diesem Beispiel speichert der MySQL-Container seine Daten im Volume mysql-data. Selbst wenn der Container gelöscht wird, bleiben die Daten im Volume erhalten und können bei einem Neustart wiederverwendet werden.

Beispiel 2: Webanwendung mit gemeinsam genutztem Volume

Stell dir vor, du hast eine Webanwendung, die statische Dateien (z.B. Bilder oder Videos) speichert, und du möchtest diese Dateien sowohl für einen Nginx-Webserver als auch für eine separate Backup-Anwendung zugänglich machen. Du kannst dies mit einem gemeinsam genutzten Volume tun:

# Webserver Container
docker run -d --name webserver -v shared-data:/usr/share/nginx/html nginx

# Backup Container
docker run -d --name backup -v shared-data:/backup busybox

Beide Container greifen auf das gleiche Volume (shared-data) zu, das statische Dateien enthält, und können gemeinsam auf diese Daten zugreifen.


7. Bereinigung und Management von Volumes

Im Laufe der Zeit kannst du viele ungenutzte Volumes ansammeln. Um ungenutzte Volumes zu entfernen, kannst du den folgenden Befehl verwenden:

docker volume prune

Dies löscht alle Volumes, die derzeit von keinem Container verwendet werden.

Möchtest du ein spezifisches Volume löschen, kannst du den Befehl docker volume rm verwenden:

docker volume rm mein-volume

Sei jedoch vorsichtig, da alle im Volume gespeicherten Daten ebenfalls gelöscht werden.


Fazit

Docker Volumes sind ein unverzichtbares Werkzeug, wenn es darum geht, persistente Daten in Docker-Containern zu speichern. Sie bieten Flexibilität, einfache Verwaltung und ermöglichen das Teilen von Daten zwischen Containern. Mit dem Wissen, wie man Volumes erstellt, verwendet und verwaltet, kannst du sicherstellen, dass deine Anwendungen auch bei Neustarts oder Container-Neuerstellungen zuverlässig auf ihre Daten zugreifen können.

Experimentiere mit Volumes in verschiedenen Szenarien und entdecke, wie sie deine Docker-Workflows verbessern können!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert