Linuxguide

Docker Volumes – Persistente Daten richtig verwalten 2025

Named Volumes, Bind Mounts und tmpfs im Vergleich

S
SeeColors IT
11. Juni 20264 Min. Lesezeit154 Aufrufe

Warum brauche ich Docker Volumes?

Container sind ephemer – sie speichern keine dauerhaften Daten. Wird ein Container entfernt (docker rm), sind alle Dateiänderungen verloren. Für Datenbanken, Uploads und Konfigurationen braucht man persistenten Speicher.

Die drei Speicheroptionen

Typ Pfad Verwaltet von Einsatz
Named Volume Docker-intern Docker Datenbanken, App-Daten
Bind Mount Host-Pfad OS Entwicklung, Konfig-Dateien
tmpfs Mount RAM Kernel Secrets, temporäre Dateien

Named Volumes (empfohlen für Produktion)

# Volume erstellen
docker volume create meine-daten

# Container mit Volume starten
docker run -d \
  --name postgres \
  -v meine-daten:/var/lib/postgresql/data \
  -e POSTGRES_PASSWORD=geheim \
  postgres:16

# Volumes anzeigen
docker volume ls

# Volume inspizieren (zeigt Host-Pfad)
docker volume inspect meine-daten

# Ungenutzte Volumes löschen
docker volume prune

Named Volumes liegen unter /var/lib/docker/volumes/ und werden von Docker verwaltet.

Bind Mounts

# Absoluter Host-Pfad → Container-Pfad
docker run -d \
  --name nginx \
  -v /opt/meine-app/html:/usr/share/nginx/html:ro \
  nginx:alpine

# Mit Docker Compose:
services:
  app:
    image: myapp:latest
    volumes:
      # Bind Mount (absoluter Pfad)
      - /etc/myapp/config.yaml:/app/config.yaml:ro
      # Named Volume
      - app-data:/app/data
      # Relativer Pfad (zum Compose-Verzeichnis)
      - ./nginx.conf:/etc/nginx/nginx.conf:ro

volumes:
  app-data:

tmpfs – Flüchtiger RAM-Speicher

# Für Secrets die nicht auf Disk landen sollen
docker run -d \
  --name myapp \
  --tmpfs /run:rw,noexec,nosuid,size=100m \
  --tmpfs /tmp \
  myapp:latest

Volume-Backup

# Named Volume sichern
docker run --rm \
  -v meine-daten:/source:ro \
  -v /backup:/backup \
  alpine tar czf /backup/meine-daten-$(date +%Y%m%d).tar.gz -C /source .

# Volume wiederherstellen
docker run --rm \
  -v meine-daten:/restore \
  -v /backup:/backup:ro \
  alpine tar xzf /backup/meine-daten-20250101.tar.gz -C /restore

Volume zu neuem Host migrieren

# Auf Quell-Host: exportieren
docker run --rm -v meine-daten:/data -v /tmp:/backup \
  alpine tar czf /backup/migration.tar.gz -C /data .
scp /tmp/migration.tar.gz ziel-server:/tmp/

# Auf Ziel-Host: importieren
docker volume create meine-daten
docker run --rm -v meine-daten:/data -v /tmp:/backup \
  alpine tar xzf /backup/migration.tar.gz -C /data

Volume-Treiber (NFS, S3)

# NFS-Volume
docker volume create \
  --driver local \
  --opt type=nfs \
  --opt o=addr=192.168.1.100,rw \
  --opt device=:/nfs/share \
  nfs-daten

FAQ

Named Volume oder Bind Mount für Produktion?
Named Volumes für Produktion – Docker kümmert sich um Pfade und Berechtigungen. Bind Mounts für Entwicklung – direkter Zugriff auf Quellcode.

Werden Volumes bei docker-compose down gelöscht?
Nein. docker-compose down entfernt Container und Netzwerke, aber keine Volumes. Mit docker-compose down -v werden auch Volumes gelöscht.

Fazit

Named Volumes sind der empfohlene Weg für persistente Daten in Produktion. Mit regelmäßigen Volume-Backups schützen Sie Ihre Container-Daten zuverlässig.

Container-Infrastruktur für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Beratung anfragen.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel