Docker Container Updates: Sicher & ohne Datenverlust

Docker Container Updates durchführen ohne Datenverlust – Docker Container Updates sicher durchführen — Titelbild mit Docker-Logo, Datensicherheits-Symbolen und korrektem Update-Workflow

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.


🖥️ Grundlagen-Serie: Docker Container Updates: Sicher & ohne Datenverlust

Dies ist der Übersichtsartikel. Vertiefe dein Wissen mit unseren Detailartikeln:

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 stopdocker rmdocker 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

Docker Update-Entscheidungsbaum: Methode wählen nach Container-Typ, Datenkritikalität und Orchestrierung (Compose, Watchtower, manuell)

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 mit docker rm -v still mitgelöscht — prüfe deshalb immer die Mounts-Ausgabe, bevor du docker rm ausfü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: latest bedeutet automatisch aktuell.
latest ist nur ein gewöhnliches, statisches Label — nicht anders als 1.0 oder stable. 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 explizites docker pull imagename:latest ist nötig — und selbst dann kann sich hinter latest plö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:

Docker Update-Flussdiagramm mit 5 Schritten: Volume-Backup, docker pull, docker stop, docker rm, docker run mit Volume-Mount

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 nextcloud erzwingt das Entfernen ohne vorheriges Stoppen. Für Datenbank-Container wie MariaDB oder PostgreSQL immer docker stop zuerst — 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 -d nach docker-compose pull aktualisiert zuverlässig.
Docker Compose prüft beim up -d standardmäßig nur, ob ein Container mit dem gewünschten Namen bereits läuft — nicht ob das zugrundeliegende Image neuer ist. Ohne --force-recreate bleiben 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-Screenshot: Docker Update-Workflow mit docker pull, docker stop, docker rm und docker run Befehlen in Deutsch

Terminal-Ausgabe des vollständigen Docker Update-Workflows: pull, stop, rm und run in der richtigen Reihenfolge.


Weiterführende Grundlagen-Artikel

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

Docker Hub
Docker Hub

183,49 €

* 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

Das könnte dich auch interessieren