Docker Container Updates: Sicher & ohne Datenverlust
docker restart wechselt das Image nicht. docker rm ohne Volume-Prüfung löscht Daten unwiederbringlich. Der einzig zuverlässige Update-Weg: Volume-Backup → docker pull → Container stoppen und entfernen → neu deployen mit identischen Mounts und Umgebungsvariablen.
Watchtower auf datenkritische Container wie Nextcloud, Vaultwarden oder Immich anzuwenden ist keine Option — dort sind manuelle Updates mit Changelog-Prüfung Pflicht.
Kurzantwort: Volume-Backup anlegen → docker pull <image> → alten Container stoppen und entfernen → neuen Container mit identischem Volume-Mount und identischen Umgebungsvariablen neu erstellen. docker restart reicht nicht, docker pull allein reicht nicht — erst das Neuerstellen des Containers aktiviert das neue Image.
Docker Container Updates sicher durchführen — der richtige Workflow verhindert Datenverlust.
Dies ist der Übersichtsartikel. Vertiefe dein Wissen mit unseren Detailartikeln:
- ➔ Docker Volumes erstellen und verwalten
- ➔ Docker Compose Container updaten
- ➔ Watchtower Docker automatisch updaten
- ➔ Docker Container Backup erstellen
- ➔ Portainer Container updaten
- ➔ Docker Container Rollback nach fehlgeschlagenem Update
Das Problem: Warum Docker Updates so oft schiefgehen
Der häufigste Fehler: docker restart ausführen und davon ausgehen, dass jetzt die neue Version läuft. Tut sie nicht. Der Container läuft nach einem Restart auf exakt demselben Image-Layer wie vorher — das neue Image, das du gerade gepullt hast, bleibt ungenutzt.
Der zweithäufigste Fehler: docker rm ausführen, ohne vorher zu prüfen, ob Daten im Container-Dateisystem statt in einem Volume liegen. Dann sind Konfigurationen, Datenbanken oder Upload-Ordner weg — unwiederbringlich.
Drei Begriffe, die du kennen musst:
- Image: Die unveränderliche Vorlage, aus der ein Container erstellt wird — vergleichbar mit einer ISO-Datei.
- Container: Die laufende Instanz dieses Images. Flüchtig — gehört nicht zur Datenhaltung. Wer Daten im Container-Dateisystem ablegt, verliert sie beim nächsten
docker rm. Das ist kein Bug, das ist Design. - Volume: Ein Datenspeicher außerhalb des Containers, der
docker rmüberlebt. Deine Daten gehören immer dort hin.
Entscheidung: Welche Update-Methode für welchen Fall?
| Situation | Methode | Befehl |
|---|---|---|
Einzelcontainer, per docker run gestartet |
Manuell stoppen, entfernen, neu starten | docker stop → docker rm → docker run |
Mehrere Container, per docker-compose.yml |
Compose Pull + Force-Recreate | Docker Compose Angebot pull && Docker Compose Angebot up -d --force-recreate |
| Unkritische Dienste (z. B. Dashboards, Monitoring) | Watchtower mit Benachrichtigung | Watchtower mit --notification-* Flags |
| Datenkritische Apps (Nextcloud, Vaultwarden, DB) | Manuell mit Changelog-Prüfung | Kein Watchtower — immer manuell |
| Rollback nötig | Altes Image-Tag oder Digest verwenden | docker run ... myapp:28.0.2 |
| Synology NAS | Container Manager GUI | Image aktualisieren → Container neu erstellen |
| Portainer | Web-UI: „Recreate“ mit „Pull latest image“ | Portainer → Container → Recreate |
| Unraid Angebot | Community Applications / Docker-Tab | Container stoppen → Update → neu starten |

Entscheidungsbaum: Die richtige Update-Methode hängt von Container-Typ, Datenkritikalität und Orchestrierungswerkzeug ab.
Schritt für Schritt: Docker Container sicher auf neue Version aktualisieren
Voraussetzung: Du weißt, wie dein Container gestartet wurde — per docker run oder per docker-compose.yml. Falls nicht: docker inspect <containername> zeigt dir alles.
Schritt 1: Überblick verschaffen — was läuft gerade?
docker ps listet jeden laufenden Container mit Name, Image und Uptime. Merk dir den Namen deines Containers (Spalte NAMES) — den brauchst du in jedem folgenden Schritt. docker images zeigt, welche Image-Versionen lokal gecacht sind, inklusive dem Datum des letzten pull.
Prüfen: Dein Container taucht in der Liste auf, z. B. nextcloud oder vaultwarden.
Schritt 2: Backup der Volumes anlegen — bevor du irgendetwas anfasst
Die Ausgabe zeigt dir unter Source den Pfad auf deinem Host, z. B. /opt/nextcloud/data.
$(date +%Y%m%d) hängt automatisch das heutige Datum ans Backup, z. B. data_backup_20250115.
Stolperfalle: Named Volumes (z. B.
nextcloud_data) liegen unter/var/lib/docker/volumes/nextcloud_data/_data. Anonyme Volumes, die manche Images beim ersten Start automatisch erstellen, werden mitdocker rm -vstill mitgelöscht — prüfe deshalb immer die Mounts-Ausgabe, bevor dudocker rmausführst.
Schritt 3: Neues Image herunterladen
docker pull lädt das aktuelle Image vom Docker Hub herunter. Das allein startet noch nichts neu — dein laufender Container bleibt unberührt.
Prüfen: Die Ausgabe endet mit Status: Downloaded newer image for nextcloud:latest. Steht dort Status: Image is up to date, ist bereits die aktuelle Version lokal vorhanden.
Irrglaube:
latestbedeutet automatisch aktuell.
latestist nur ein gewöhnliches, statisches Label — nicht anders als1.0oderstable. Es bedeutet lediglich: „Das war die neueste Version, als der Entwickler dieses Tag gesetzt hat.“ Docker prüft nicht selbstständig, ob auf Docker Hub kaufen eine neuere Version unter diesem Tag liegt. Ein explizitesdocker pull imagename:latestist nötig — und selbst dann kann sich hinterlatestplötzlich eine komplett andere Hauptversion verbergen. Für produktive Setups: Immer einen konkreten Versions-Tag pinnen, z. B.nextcloud:28.0.3.
Um den genauen Image-Digest vor und nach dem Pull zu vergleichen:

Der vollständige Docker Update-Ablauf als Flussdiagramm: Von Volume-Backup über Image Pull bis zum Neustart des Containers.
Schritt 4: Alten Container stoppen und entfernen
docker stop sendet ein sauberes Shutdown-Signal. docker rm löscht den Container-Layer, aber nicht deine Volumes — solange du nicht docker volume rm oder das --volumes-Flag verwendest.
Stolperfalle:
docker rm -f nextclouderzwingt das Entfernen ohne vorheriges Stoppen. Für Datenbank-Container wie MariaDB oder PostgreSQL immerdocker stopzuerst — sonst riskierst du korrupte Tabellen.
Schritt 5: Neuen Container mit gleichem Volume-Mount starten
Variante A — docker run (Einzelcontainer):
Variante B — docker-compose (empfohlen, weil reproduzierbar):
Irrglaube:
docker-compose up -dnachdocker-compose pullaktualisiert zuverlässig.
Docker Compose prüft beimup -dstandardmäßig nur, ob ein Container mit dem gewünschten Namen bereits läuft — nicht ob das zugrundeliegende Image neuer ist. Ohne--force-recreatebleiben laufende Container oft unverändert, selbst wenn das neue Image längst lokal vorliegt. Das Ergebnis: Du glaubst, aktualisiert zu haben — der Container läuft aber noch auf dem alten Stand.
Prüfen:
docker ps zeigt den Container als Up X seconds. docker logs gibt die letzten 50 Zeilen aus — hier siehst du sofort, ob Fehler wie fehlende Umgebungsvariablen oder fehlgeschlagene Datenbankmigrationen aufgetreten sind.
Stolperfalle nach Datenbank-Updates: Neue Major-Versionen (z. B. MariaDB 10.x → 11.x) erfordern oft eine explizite Migration. In diesem Fall: altes Image-Tag pinnen (
mariadb:10.11) und erst nach einem Datenbank-Dump updaten.

Terminal-Ausgabe des vollständigen Docker Update-Workflows: pull, stop, rm und run in der richtigen Reihenfolge.
Weiterführende Grundlagen-Artikel
- Docker Volumes erstellen und verwalten
- Docker Compose Container updaten
- Watchtower Docker automatisch updaten
- Docker Container Backup erstellen
- Portainer Container updaten
- Docker Container Rollback nach fehlgeschlagenem Update
Häufig gestellte Fragen
Wie update ich einen Docker Container ohne Datenverlust?
Stoppe den Container, ziehe das neue Image mit docker pull, lösche dann den Container mit docker rm — nicht das Volume — und starte ihn mit identischem docker run-Befehl neu. Solange alle persistenten Daten in einem benannten Volume oder einem Bind-Mount liegen, bleiben sie beim docker rm vollständig erhalten. Das Container-Dateisystem selbst ist flüchtig und gehört nie zur Datenhaltung.
Was passiert mit meinen Daten, wenn ich docker rm ausführe?
Alles, was im Container-Dateisystem liegt — also nicht explizit per -v oder volumes: nach außen gemountet wurde — ist danach weg, ohne Wiederherstellungsmöglichkeit. Volumes und Bind-Mounts überleben docker rm unbeschädigt. Prüfe vor dem Löschen mit Docker Inspect Angebot <containername> unter Mounts, welche Pfade gemountet sind. Was dort nicht auftaucht, verlierst du.
Warum startet mein Container nach dem Update nicht mehr?
Häufigste Ursache: Die neue Image-Version erwartet andere Umgebungsvariablen oder ein geändertes Konfigurationsformat. Schau zuerst in die Logs:
Dort steht fast immer, was fehlt oder falsch ist — ein unbekannter ENV-Key, ein umbenannter Config-Pfad, eine fehlgeschlagene Datenbankmigration. Zweite Anlaufstelle ist das Changelog des Images auf Docker Hub oder GitHub. Breaking Changes stehen dort unter BREAKING oder in den Release Notes der jeweiligen Major-Version.
Warum zeigt docker pull „Image is up to date“, obwohl eine neue Version erschienen ist?
Du verwendest wahrscheinlich das latest-Tag, das der Maintainer noch nicht auf die neue Version gesetzt hat — oder du hast einen konkreten Tag gepinnt, der sich nicht geändert hat. Prüfe auf Docker Hub unter „Tags“, ob ein neuerer Tag existiert. Für kritische Updates: Immer den Digest vergleichen:
Wie erkenne ich, ob mein Container wirklich auf dem neuen Image läuft?
Vergleiche den Image-Hash aus docker inspect mit dem Digest des frisch gepullten Images. Sind sie identisch, läuft der Container auf dem neuen Stand. Unterscheiden sie sich, wurde der Container nicht neu erstellt.
Ist latest immer die neueste Version?
Nein. latest ist nur ein Tag-Label — kein Versprechen. Viele Maintainer aktualisieren latest nicht synchron mit neuen Releases, manche setzen es nie um. Außerdem cached Docker das Tag lokal: Wenn du latest bereits gezogen hast, liefert docker pull nur dann ein neues Image, wenn sich der zugrundeliegende Digest auf Docker Hub geändert hat. Für produktive Setups: Immer einen konkreten Versions-Tag pinnen, z. B. nextcloud:28.0.3.
Wie update ich alle Docker Container auf einmal?
Mit Compose:
Ohne Compose kannst du ein kurzes Shell-Skript über alle laufenden Container iterieren lassen — aber das ist fehleranfällig, weil du die originalen docker run-Parameter kennen musst. Sicherer: Alle Container über Compose verwalten, dann ist das Massenupdate ein einziger Befehl. Watchtower kann das automatisieren, sollte aber nur für unkritische Dienste und mit Benachrichtigungen betrieben werden — sonst riskierst du unbeaufsichtigte Breaking Changes.
Kann ich ein Docker Update rückgängig machen?
Ja, wenn du das alte Image noch lokal hast oder den genauen Digest kennst. Docker löscht alte Image-Layer nicht automatisch, solange kein docker image prune gelaufen ist:
Wenn du den Digest notiert hast (sichtbar nach docker pull als Digest: sha256:...), kannst du auch direkt darauf referenzieren. Ohne Backup des Volumes bringt dir das Rollback des Images allerdings wenig, wenn eine Datenbankmigration die Schemaversion bereits erhöht hat — die alte App-Version läuft dann auf einem Schema, das sie nicht mehr versteht.
Was ist der Unterschied zwischen docker restart und Container neu erstellen?
docker restart stoppt den laufenden Container-Prozess und startet ihn wieder — mit demselben Image-Layer, denselben Umgebungsvariablen, derselben Konfiguration. Das neue Image wird dabei nicht eingespielt. Neu erstellen bedeutet: docker stop, docker rm, dann docker run mit dem frisch gepullten Image. Erst dann läuft der Container tatsächlich auf der neuen Version.
Was ist der Unterschied zwischen docker upgrade und docker recreate?
docker upgrade existiert als nativer Docker-Befehl nicht. Was viele meinen: das Ersetzen eines Containers durch einen neuen aus einem aktuelleren Image — also docker rm + docker run. „Recreate“ ist der Begriff, den Portainer und Docker Compose für diesen Vorgang verwenden. Beide bedeuten dasselbe: Container löschen, neu erstellen, dabei Volumes und Konfiguration beibehalten.
Was ist ein Image Digest und warum ist er wichtiger als ein Tag?
Ein Tag wie latest oder 28.0.3 ist ein menschenlesbares Label, das der Maintainer auf einen bestimmten Image-Stand zeigen lässt — und das er jederzeit auf einen anderen Stand umzeigen kann. Ein Digest (sha256:abc123...) ist der kryptografische Hash des tatsächlichen Image-Inhalts — unveränderlich und eindeutig. Wenn du sicherstellen willst, dass du exakt dasselbe Image verwendest wie beim letzten erfolgreichen Start, pin den Digest:
Wie sichere ich meine Docker Volumes vor dem Update?
Für benannte Volumes:
Bind-Mounts sicherst du mit cp -r oder rsync. Führe das vor jedem Update aus — nicht danach.
Wie update ich einen Docker Container auf Proxmox in einer LXC oder Ubuntu VM?
Der Ablauf ist identisch mit dem Standard-Vorgehen:
Auf Proxmox-Hosts: Prüfe vor dem Pull den freien Speicher (df -h). Volle Dateisysteme sind eine häufige Ursache für fehlgeschlagene Image-Downloads. Alte, nicht mehr benötigte Images bereinigen:
Fazit
Ein Docker Container Update ist kein docker restart — es ist ein kontrolliertes Stoppen, Neuerstellen und Remounten. Volume-Mounts vor jedem docker rm prüfen, Backup anlegen, dann deployen. Wer das einmal verinnerlicht hat, verliert keine Daten mehr.
Unsere Empfehlungen

* Affiliate-Links – beim Kauf erhalten wir ggf. eine Provision.
Preisvergleich
| Produkt | smartkram | Amazon | eBay |
|---|---|---|---|
| Unraid | — | Amazon ↗ | eBay ↗ |
| Docker Hub | smartkram ↗ | Amazon ↗ | eBay ↗ |
| Docker Compose | — | Amazon ↗ | eBay ↗ |
| Docker Inspect | smartkram ↗ | Amazon ↗ | eBay ↗ |
* Affiliate-Links – beim Kauf erhalten wir ggf. eine Provision.
✍️ Autor: homeserverlab-Redaktion
🔄 Zuletzt aktualisiert: 7. Juni 2026







