On-Premises- und Cloud-Bereitstellungen von Containern So lassen sich Docker-Container reibungslos migrieren

Ein Gastbeitrag von Thomas Joos 7 min Lesedauer

Docker vereinfacht die Entwicklung und den Betrieb containerisierter Anwendungen stark – daher ist das Tool ein fester Bestandteil vieler IT-Infrastrukturen. Doch die Migration und die Verwaltung bergen auch Herausforderungen. Insbesondere beim Storage, der eine zentrale Rolle für die Persistenz von Daten spielt, ist ein vertieftes Verständnis von Bedeutung.

Verteilte Speichersysteme bieten Skalierbarkeit, erfordern aber genaue Konfigurationen und können durch Netzwerklatenz und I/O-Performance beeinflusst werden.(Bild:  Dall-E / KI-generiert)
Verteilte Speichersysteme bieten Skalierbarkeit, erfordern aber genaue Konfigurationen und können durch Netzwerklatenz und I/O-Performance beeinflusst werden.
(Bild: Dall-E / KI-generiert)

Die Migration von Containern zwischen lokalen Systemen und Cloud-Umgebungen ist ein häufig vorkommendes Szenario. Neben den Containern selbst müssen auch die Netzwerkkonfigurationen und die Storage-Komponenten korrekt übernommen werden. Docker-Compose oder Kubernetes können dabei helfen, die Services und die Infrastruktur konsistent abzubilden. Einen kritischen Punkt in diesem Prozess stellt der persistente Speicher dar, der nicht einfach in Container-Images eingebettet werden kann.

Bildergalerie

Docker-Container-Migration: Schritt für Schritt

Wenn Hardware- oder Serverwechsel anstehen, ist die Migration von Docker-Containern ein unverzichtbarer Prozess. Da Docker-Container flüchtig sind und keine persistenten Daten speichern, müssen bei der Migration die zugehörigen Daten in Docker-Volumes oder Bind-Mounts gesichert und übertragen werden. Der Container selbst bleibt auf verschiedenen Systemen identisch – vorausgesetzt, es wird dieselbe Version verwendet.

Der wichtigste Schritt ist die Sicherung des Datenvolumens, das sich üblicherweise im Verzeichnis „/var/lib/docker/volumes“ befindet. Vor Beginn der Datenmigration sollte der Container angehalten werden, um sicherzustellen, dass alle Änderungen korrekt gespeichert sind. Anschließend wird das Volumen über das Netzwerk oder per SCP-Befehl (kurz für: Secure-Copy-Protocol) auf das Zielsystem übertragen. Nach der Migration wird der Container auf dem neuen Server mit denselben Konfigurationen und Volumes neu gestartet. Es ist entscheidend, dass die Versionen der Container übereinstimmen, um mögliche Inkompatibilitäten zu vermeiden.

Storage-Optionen in Docker

Docker bietet unterschiedliche Mechanismen, um Speicher zu verwalten. Diese lassen sich in drei Hauptkategorien einteilen: Volumes, Bind Mounts und tmpfs-Mounts (kurz für: temporary file system). Die Wahl der richtigen Storage-Option beeinflusst die Performance, Datensicherheit und Skalierbarkeit der Umgebung direkt.

Volumes sind dazu da, persistente Daten in Docker zu speichern. Die Volumes hängen nicht vom Lebenszyklus der Container ab. Docker selbst verwaltet die Volumes, was bedeutet, dass der Administrator vor weniger Konfigurationsaufwand steht. Volumes können auf verschiedenen Backend-Systemen gespeichert werden, zum Beispiel auf lokalen Dateisystemen, in der Cloud oder in Netzwerk-Storage-Systemen. Der Vorteil von Volumes liegt in der Portabilität. Das liegt daran, dass ein Container-Setup, das Volumes nutzt, sich vereinfacht migrieren lässt. Docker übernimmt hierbei die Verwaltung, und Volumes können zwischen Hosts geteilt werden.

Bind Mounts lassen es zu, ein Verzeichnis vom Host-Dateisystem direkt in den Container zu mounten oder einzubinden. Daher sind Bind Mounts weniger abstrahiert als Volumes. Bind Mounts erfordern, dass Administratoren wissen, was auf dem Host passiert. Ein Problem der Bind Mounts stellt jedoch die mangelnde Portabilität dar, da sie stark an die Verzeichnisstruktur des Hosts gebunden sind. Bei einer Migration muss also sichergestellt werden, dass die Dateipfade auf dem Zielsystem identisch sind, was den Aufwand erhöht.

Bei tmpfs-Mounts werden Daten im RAM gespeichert, sodass sie nach dem Neustart des Containers verloren gehen. Sie eignen sich für temporäre Daten, die nicht persistiert werden müssen – so wie Caches oder Zwischenergebnisse. Daher sind die tmpfs-Mounts im Kontext der Migration weniger relevant, da sie keine persistenten Daten beinhalten.

Um Volumes zu migrieren, kann man ein Backup erstellen. Das Backup erfolgt, indem ein temporärer Container gestartet wird, der alle Volumes eines Zielcontainers in eine komprimierte Datei speichert. Diese Datei kann dann auf einen anderen Host übertragen und wiederhergestellt werden. Die Nutzung eines komprimierten Archivs wie „.tar“ beschleunigt den Prozess und spart Speicherplatz.

Storage-Migration von Containern: Das sind die Herausforderungen

Bei der Migration von Docker-Umgebungen, die persistente Daten nutzen, gibt es mehrere wichtige Aspekte zu berücksichtigen: Einer der größten Stolpersteine ist die Konsistenz der Daten während des Migrationsprozesses. In produktiven Umgebungen, in denen Container fortlaufend Daten verarbeiten, müssen Admins sicherstellen, dass keine Daten verloren gehen und dass die Datenintegrität gewährleistet bleibt. Hierbei sind Strategien wie Live-Migration oder das Einfrieren von Containern während der Datenmigration von Vorteil.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Zudem stellt sich die Frage der Storage-Technologie, die im Zielsystem verwendet werden soll. Eine Migration lokaler Volumes auf eine verteilte Speicherlösung kann zwar die Skalierbarkeit erhöhen, erfordert jedoch zusätzliche Konfigurationsschritte und möglicherweise auch Anpassungen in der Container-Architektur. Besonders bei der Nutzung verteilter Dateisysteme müssen Admins die Netzwerklatenz und die I/O-Performance im Auge behalten, da diese den Betrieb der Container beeinflussen können.

Ein weiteres Problemfeld ist die Migration von Datenbanken innerhalb von Containern. Datenbanken erfordern in der Regel einen hohen Grad an Konsistenz und Verfügbarkeit. Beim Migrieren von Containern mit eingebetteten Datenbanken sollten Admins darauf achten, dass keine Schreiboperationen während der Migration stattfinden, um Inkonsistenzen zu vermeiden. Tools können hier unterstützen, indem sie konsistente Backups der Datenbank erstellen, die dann auf das Zielsystem übertragen werden.

Storage-Optimierung nach der Migration

Nach der Migration sollten Admins sicherstellen, dass das Storage-Setup für die neue Umgebung optimiert ist. Dazu gehören unter anderem Maßnahmen zur Verbesserung der I/O-Performance, zum Beispiel durch den Einsatz von SSD-basiertem Storage oder die Optimierung von Netzwerk-Storage-Lösungen. Auch die Implementierung von Backup-Strategien, die auf die neue Infrastruktur abgestimmt sind, spielt eine wichtige Rolle. Containerisierte Anwendungen sollten so gestaltet sein, dass sie stateless (zustandslos) arbeiten, um den Verwaltungsaufwand für den Storage zu minimieren. Falls dies nicht möglich ist, muss das Storage-System robust und redundant gestaltet sein.

Auch die Überwachung des Storage-Bedarfs ist entscheidend. Mit wachsendem Datenvolumen kann es notwendig werden, den Storage dynamisch zu erweitern oder in ein verteiltes Dateisystem zu migrieren, das eine bessere Skalierbarkeit bietet. Docker selbst bietet hier zwar keine nativen Monitoring-Tools, aber mit externen Lösungen wie Prometheus und Grafana lassen sich Storage-Performance und Auslastung detailliert überwachen.

Docker-Container auf einen anderen Server migrieren

Die Migration von Docker-Containern auf einen neuen Server ist ein wichtiger Prozess, um Ausfallzeiten zu minimieren und Wartungsarbeiten zu erleichtern. Durch den Umzug eines Containers einschließlich aller Konfigurationen und Daten kann die Verfügbarkeit von Anwendungen während Server-Upgrades oder im Falle von Hardwarefehlern sichergestellt werden. Zunächst sollte ein Backup des Containers auf dem Quellserver erstellt und auf dem Zielserver mit einem Docker-Backup-Tool wiederhergestellt werden.

Die Sicherung und Übertragung erfolgen mittels des SCP-Berichts. Nachdem das Backup erfolgreich auf dem neuen Server wiederhergestellt ist, müssen die DNS-Einstellungen so angepasst werden, dass die Domain auf die neue Server-IP verweist. Dieser Prozess kann nicht nur auf Webanwendungen wie WordPress, sondern auch auf andere Container wie Nginx oder MySQL angewendet werden.

Migration von Docker-Daten zu Kubernetes mit Longhorn und Rancher

Die Datenmigration von Docker zu Kubernetes ist ein entscheidender Schritt, um Anwendungen nahtlos in einer Kubernetes-Umgebung bereitzustellen. In diesem Fall kann zum Beispiel Longhorn als persistenter Storage im Kubernetes-Cluster genutzt werden. Zuerst muss das Dateisystem des Docker-Containers identifiziert werden, und relevante Daten wie in einem Nginx-Container müssen gesichert werden. Anschließend wird zum Beispiel über Rancher ein neues Volume mit Longhorn erstellt und dem entsprechenden Kubernetes-Knoten zugewiesen.

Longhorn ist eine verteilte Blockspeicherlösung, die in Kubernetes- und Docker-Umgebungen verwendet wird, um persistente Speichervolumes bereitzustellen. In Kubernetes wird Longhorn oft genutzt, um Stateful-Workloads zu unterstützen, die dauerhaft Daten speichern, wie Datenbanken oder Anwendungen mit lokalem Dateisystemzugriff. Es integriert sich nahtlos in Kubernetes und stellt über Persistent Volume Claims (PVCs) hochverfügbare, redundante Speicher bereit. In Docker-Umgebungen bietet Longhorn ähnliche Funktionen, indem es verteilte Speicher zur Verfügung stellt und eine einfache Möglichkeit zur Verwaltung und Migration von Volumes zwischen verschiedenen Hosts bietet. Besonders nützlich ist Longhorn in Multi-Node-Clustern, da es Datenreplikation und Snapshots unterstützt, um eine hohe Verfügbarkeit sicherzustellen.

Bildergalerie

Rancher von Suse ist eine Open-Source-Plattform zur Verwaltung von Docker-Containern und Kubernetes-Clustern. Die Community Edition von Rancher steht kostenlos zur Verfügung. Die Plattform wurde ursprünglich konzipiert, um Docker-Container in verschiedenen Umgebungen zu orchestrieren – doch mittlerweile hat sich Rancher zu einer umfassenden Plattform für Kubernetes-Management weiterentwickelt. Im Kontext von Docker bietet Rancher eine benutzerfreundliche Oberfläche, um Container auf verschiedenen Hosts zu deployen, zu verwalten und zu überwachen. Es vereinfacht die Verwaltung von Docker-Containern, Netzwerken und Volumes und ermöglicht eine effiziente Bereitstellung und Skalierung containerisierter Anwendungen. Darüber hinaus bietet Rancher einen Multi-Cluster-Support, sodass verschiedene Docker-Umgebungen, ausgehend von einer zentralen Stelle, verwaltet werden können.

Nach dem Mounten des neuen Volumes können die Daten mittels Rsync von der Docker-Umgebung in das neue Longhorn-Volume kopiert werden. Der nächste Schritt sind das Unmounten des Volumes und die Zuweisung an den Kubernetes-Cluster, wo es als PVC verwendet wird. Schließlich wird der Container in Kubernetes unter Verwendung des migrierten Volumes neu gestartet, wodurch der Betrieb der Anwendung in Kubernetes mit den ursprünglichen Daten aus Docker fortgesetzt wird.

Aktuelles eBook

Open-Source-Storage – Speicher-Software zum Nulltarif

eBook Open-Source-Storage
eBook „Open-Source-Storage“
(Bild: Storage-Insider)

Der Bedarf an Speicherkapazität steigt von Tag zu Tag – nicht nur, um die Daten von Produkten, Kunden und Transaktionen zu sichern, sondern auch, um Compliance-Anforderungen zu erfüllen und Auditierungen gut zu überstehen. Eine leistungsfähige Storage-Lösung ist also gefragt. Eine kostenlose Option bietet Open-Source-Software für Storage, insbesondere dann, wenn man sie selbst den eigenen Anforderungen anpassen darf.

Die Themen im Überblick:

  • Warum Storage als Open Source?
  • NAS & Objektspeicher
  • Backup & Disaster Recovery
  • Dateisysteme
  • Technologiestapel & Ökosysteme

(ID:50188747)