Container sind ephemer. Volumes loesen die Datenpersistenz.
Typen¶
- Volumes – von Docker verwaltet, bevorzugt
- Bind Mounts – Host-Verzeichnis, fuer Entwicklung
- tmpfs – im Speicher
Volumes¶
docker volume create mydata docker run -d -v mydata:/var/lib/postgresql/data postgres:16
Docker Volumes und Storage¶
docker run –rm -v mydata:/src -v $(pwd):/bak alpine tar czf /bak/backup.tar.gz -C /src .
Compose¶
services: db: volumes: - pgdata:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql volumes: pgdata:
Storage Best Practices¶
Named Volumes sind die bevorzugte Methode fuer Produktionsdaten — Docker verwaltet sie, sie sind zwischen Hosts portabel und unterstuetzen Volume Drivers fuer Remote Storage (NFS, AWS EBS, Azure Files). Bind Mounts bilden ein Host-Verzeichnis direkt in den Container ab — ideal fuer die Entwicklung, wo Sie Echtzeit-Synchronisation des Quellcodes benoetigen.
Fuer Datenbanken verwenden Sie immer Named Volumes, niemals Bind Mounts — die Performance ist besser und Daten ueberleben die Neuerstellung von Containern. Sichern Sie Volumes regelmaessig mit docker run --rm -v mydata:/src alpine tar czf - und leiten Sie die Ausgabe an S3 oder anderen Backup-Storage weiter. In Kubernetes werden anstelle von Docker Volumes PersistentVolumeClaims (PVC) mit StorageClass verwendet, die automatisch Speicherplatz nach Bedarf bereitstellen.
Volumes = persistente Daten¶
Named Volumes fuer Produktion, Bind Mounts fuer Entwicklung. Backups nicht vergessen!