Docker-Container und Volumes sichern
Was dieser Artikel über Docker-Backup behandelt
- Warum Backups für Docker-Container wichtig sind.
- Wie man Volumes manuell und automatisch sichert.
- Wie man Compose-Konfigurationen und Umgebungsvariablen sichert.
- Wie man Backups verschlüsselt und offsite speichert.
- Wiederherstellung und typische Fehler.
Einleitung: Docker-Container und Volumes sichern
Docker-Container selbst sind zustandslos. Daten, Konfigurationen und Workloads leben aber in Volumes, Bind Mounts und Compose-Dateien. Wer diese nicht sichert, verliert bei einem Hardwaredefekt, einem versehentlichen Löschen oder einem fehlerhaften Update alles. Ein gutes Backup-Konzept umfasst daher Volumes, Compose-Dateien, .env-Dateien, Images und regelmässige Offsite-Kopien.
Dieser Artikel zeigt, wie man Docker-Backups strukturiert, automatisiert und wiederherstellt.
Wichtige Begriffe
- Volume-Backup: Sicherung eines Docker-Volumes.
- Bind Mount Backup: Sicherung eines auf dem Host eingebundenen Verzeichnisses.
- Compose-Backup: Sicherung der YAML-Datei und Umgebungsvariablen.
- Offsite: Speicherung ausserhalb des eigenen Servers.
- Snapshot: Zeitpunktbezogene Kopie des Systems.
- Restore: Wiederherstellung aus einem Backup.
- Retention: Aufbewahrungsdauer von Backups.
- rsync: Tool für inkrementelle Sicherungen.
Was muss gesichert werden?
| Komponente | Begründung |
|---|---|
| Docker Volumes | Enthalten Datenbanken, Modelle, Konfigurationen. |
| Bind Mounts | Persistente Daten, die auf dem Host liegen. |
| compose.yaml | Definiert den gesamten Stack. |
| .env-Dateien | Secrets und Konfigurationen. |
| Docker Images | Für schnelle Wiederherstellung ohne Neudownload. |
| Container-Einstellungen | Labels, Netzwerke, Umgebungsvariablen. |
Manuelles Volume-Backup
Ein einfacher Weg ist ein temporärer Container, der das Volume einhängt:
docker run --rm -v ollama-data:/data -v $(pwd):/backup alpine tar -czf /backup/ollama-data.tar.gz -C /data .
Das erzeugt eine komprimierte Datei im aktuellen Verzeichnis.
Manuelles Restore
docker run --rm -v ollama-data:/data -v $(pwd):/backup alpine tar -xzf /backup/ollama-data.tar.gz -C /data
Wichtig: Das Zielvolume muss existieren oder vorher erstellt werden.
Bind Mounts sichern
Bind Mounts liegen als normale Verzeichnisse auf dem Host. Sie lassen sich mit rsync oder tar sichern:
rsync -av /opt/ollama-data /backup/ollama-data/
Compose-Dateien und Secrets
Ein zentrales Verzeichnis für alle Compose-Projekte erleichtert Backups:
rsync -av /opt/docker-compose/ /backup/docker-compose/
Darin sollten compose.yaml, .env-Dateien und Konfigurationen liegen. .env-Dateien enthalten Secrets und sollten verschlüsselt oder besonders geschützt werden.
Automatisierte Backups
Ein Bash-Skript für regelmässige Sicherungen:
#!/bin/bash
set -e
BACKUP_DIR="/backup/docker/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# Volumes
for volume in ollama-data pg-data open-webui-data; do
docker run --rm -v "$volume":/data -v "$BACKUP_DIR":/backup alpine \
tar -czf "/backup/$volume.tar.gz" -C /data .
done
# Compose-Projekte
rsync -av /opt/docker-compose/ "$BACKUP_DIR/docker-compose/"
# Logs
echo "Backup erstellt: $BACKUP_DIR" >> /var/log/docker-backup.log
Cronjob
0 3 * * * /usr/local/bin/backup-docker.sh >> /var/log/docker-backup.log 2>&1
Offsite und Verschlüsselung
Backups sollten nicht nur lokal liegen. Möglichkeiten:
- Externe Festplatte.
- NAS oder Synology.
- Cloud-Speicher via rclone.
- S3-kompatible Objektspeicher.
- Tailscale-Node im entfernten Netzwerk.
Verschlüsselung mit Restic:
restic -r /mnt/backup-repo backup /backup/docker
restic -r /mnt/backup-repo snapshots
Backup einer laufenden Datenbank
Datenbanken sollten konsistent gesichert werden. Besser als reines Kopieren ist ein Datenbank-Dump:
docker exec postgres pg_dumpall -U admin > backup.sql
Für SQLite kann man das Datenbankfile kopieren, solange keine Transaktion aktiv ist.
Restore eines gesamten Stacks
- Docker installieren.
- Backups auf den neuen Host übertragen.
- Volumes wiederherstellen.
- Compose-Projekte an den richtigen Ort kopieren.
docker compose up -dausführen.
Backup-Strategien
- 3-2-1 Regel: Drei Kopien, zwei Medien, eine Kopie ausser Haus.
- Inkrementell: Nur geänderte Daten sichern.
- Snapshot vor Updates: Vor jedem grossen Update ein Backup.
- Test-Restore: Regelmässig prüfen, ob Backups funktionieren.
- Monitoring: Backup-Erfolg protokollieren und Alarme bei Fehlern.
Typische Stolpersteine
- Container wird nicht gesichert: Container sind zustandslos, Volumes sind entscheidend.
- Datenbanken im Betrieb kopieren: Inkonsistente Backups.
- Secrets unverschlüsselt:
.env-Dateien enthalten Passwörter. - Zu wenig Retention: Alte Backups werden nicht gelöscht, Speicher läuft voll.
- Kein Restore getestet: Backup funktioniert, Restore nicht.
- Backup liegt nur lokal: Bei Hardwareausfall verloren.
Weiterführende Links und Infos
- BotServ.de Docker Volumes
- BotServ.de Docker Compose
- BotServ.de Proxmox Backups und Restore
- BotServ.de Secret-Management
FAQ: Docker-Backup
Soll ich ganze Container sichern? Nein, Volumes und Compose-Dateien sichern. Container lassen sich neu erstellen.
Wie oft sollte ich sichern? Täglich für aktive Daten, wöchentlich für statische Konfigurationen.
Sind Docker-Volumes-Backups portabel? Ja, wenn sie auf ein gleichartiges Zielsystem übertragen werden.
Wie sichere ich Secrets? Verschlüsselt oder in einem Password-Manager.
Was ist die 3-2-1 Regel? Drei Kopien, zwei verschiedene Speichermedien, eine Kopie ausser Haus.
Quellen und weiterführende Literatur
- Docker Volumes Backup: https://docs.docker.com/storage/volumes/#back-up-restore-or-migrate-data-volumes
- restic: https://restic.net/
- rsync: https://rsync.samba.org/
Zusammenfassung: Docker-Container und Volumes sichern
Backups von Docker-Setups konzentrieren sich auf Volumes, Bind Mounts, Compose-Dateien und Umgebungsvariablen. Manuelle Sicherungen sind mit tar und rsync schnell gemacht, automatisierte Backups per Cronjob sind für den produktiven Betrieb notwendig. Wichtig sind konsistente Datenbank-Dumps, Verschlüsselung von Secrets, Offsite-Speicher und regelmässige Restore-Tests. Wer die 3-2-1-Regel beachtet, ist vor Datenverlust deutlich besser geschützt.


