Docker-Volumes verstehen

Docker-Container sind von Natur aus vergänglich. Wenn ein Container gestoppt und entfernt wird, gehen alle im Container-Dateisystem geschriebenen Daten verloren. Die meisten realen Anwendungen benötigen persistente Daten.

Docker bietet drei Mechanismen für die Datenpersistenz:

  1. Benannte Volumes: Von Docker verwaltet, gespeichert in /var/lib/docker/volumes/.
  2. Bind Mounts: Bilden ein bestimmtes Host-Verzeichnis in den Container ab.
  3. tmpfs-Mounts: In-Memory-Speicher, der beim Stoppen des Containers verworfen wird.

Voraussetzungen

  • Docker Engine 20.10+ installiert.
  • Shell-Zugang zum Docker-Host.
  • Grundlegende Vertrautheit mit Docker-CLI-Befehlen.

Häufige Docker-Volume-Probleme

1. Datenverlust beim Neustart

docker volume create myapp-data
docker run -d --name postgres-db \
  -v myapp-data:/var/lib/postgresql/data \
  -e POSTGRES_PASSWORD=secret postgres:16

Kritisch: docker-compose down -v wird alle Volumes löschen.

2. Berechtigung-verweigert-Fehler

docker exec mycontainer id
ls -lan /pfad/zum/host/verzeichnis
docker exec mycontainer ls -lan /data
docker run -d -v myvolume:/data myimage
docker run -d --user "$(id -u):$(id -g)" -v ./data:/data myimage

3. Bind Mount zeigt leeres Verzeichnis

Bind Mounts überlagern das Container-Dateisystem. Verwenden Sie benannte Volumes.

4. Verwaiste Volumes verbrauchen Speicherplatz

docker volume ls -f dangling=true
docker system df
docker volume prune

5. Daten synchronisieren nicht auf macOS/Windows

  • Verwenden Sie VirtioFS (Docker Desktop 4.15+).
  • Verwenden Sie benannte Volumes für große Datensätze.

Prävention und Best Practices

  • Verwenden Sie immer benannte Volumes für Datenbanken.
  • Verwenden Sie niemals docker-compose down -v in der Produktion.
  • Sichern Sie Volumes regelmäßig.
  • Konfigurieren Sie schreibgeschützte Mounts mit dem :ro-Suffix.

Zusammenfassung

  • Docker-Container sind vergänglich — verwenden Sie immer Volumes für persistente Daten.
  • Berechtigungsfehler entstehen durch UID-Diskrepanzen.
  • Benannte Volumes werden in der Produktion gegenüber Bind Mounts bevorzugt.
  • Bereinigen Sie verwaiste Volumes mit docker volume prune.

Verwandte Artikel