Die Migration von Docker-Containern auf einen neuen Server ohne Downtime ist eine Herausforderung, die sorgfältige Planung und die richtigen Werkzeuge erfordert. Ziel ist es, die bestehenden Services während des Umzugs verfügbar zu halten und gleichzeitig Datenkonsistenz sowie Netzwerkverbindungen zu sichern. In diesem Tutorial erfahren Sie praxisnah, wie Sie Container, Volumes und Netzwerke auf einen neuen Server umziehen, ohne Produktionsunterbrechungen zu riskieren.
Vorbereitung des Zielservers
Bevor Container verschoben werden, muss der Zielserver korrekt vorbereitet werden:
- Installation von Docker und Docker Compose in der gleichen Version wie auf dem Quellserver
- Erstellen identischer Benutzer und Gruppen, falls Container mit spezifischen User-Rechten laufen
- Netzwerkkonfigurationen prüfen (Bridge-Netzwerke, Ports)
- Ausreichend Speicherplatz für Images und Volumes bereitstellen
sudo apt update
sudo apt install docker.io docker-compose -y
docker --version
docker-compose --version
Datenvolumes identifizieren und sichern
Persistente Daten müssen vor dem Umzug gesichert werden. Identifizieren Sie alle relevanten Volumes:
docker volume ls
docker inspect | grep Mountpoint
Anschließend können Sie die Daten sichern:
docker run --rm -v :/data -v /backup:/backup alpine
tar czf /backup/.tar.gz -C /data .
- Backup in ein temporäres Verzeichnis oder direkt auf den Zielserver
- Sicherstellen, dass alle Container für das Volume gestoppt sind
Container-Images sichern oder pushen
Images können auf verschiedene Weise übertragen werden:
- Docker Registry: Pushen Sie Images in eine private Registry
- Direkter Export:
docker saveunddocker load
# Export
docker save myorg/web:1.0.0 -o web_1.0.0.tar
# Import auf Zielserver
docker load -i web_1.0.0.tar
Migration der Compose-Dateien
Kopieren Sie die bestehenden docker-compose.yml und eventuelle Override-Dateien auf den Zielserver:
scp docker-compose.yml docker-compose.override.yml user@newserver:/home/user/app/
- Stellen Sie sicher, dass Secrets und Umgebungsvariablen ebenfalls übertragen werden
- Prüfen Sie Pfade zu Volumes und Netzwerken
Aufsetzen der Zielumgebung
Auf dem Zielserver können die Container parallel zur alten Umgebung gestartet werden, z. B. auf anderen Ports oder mit einem temporären Netzwerk:
docker-compose -f docker-compose.yml -f docker-compose.override.prod.yml up -d
- Healthchecks prüfen, ob alle Services korrekt starten
- Logs überwachen:
docker-compose logs -f
Synchronisation der Daten
Während die Container auf dem Zielserver laufen, müssen die Volumes synchronisiert werden, um keine Datenverluste zu riskieren:
rsync -avz --progress /backup/db_data.tar.gz user@newserver:/backup/
ssh user@newserver "tar xzf /backup/db_data.tar.gz -C /var/lib/docker/volumes/db_data/_data"
- Für datenintensive Anwendungen empfiehlt sich ein kurzzeitiges Read-Only auf der Quellumgebung während der finalen Synchronisation
- Datenbanken können mittels Dump & Restore oder Streaming synchronisiert werden
Traffic-Umschaltung
Nach erfolgreicher Synchronisation kann der Live-Traffic auf die neue Umgebung umgeleitet werden:
- Reverse Proxy oder Load Balancer konfigurieren
- DNS-Einträge aktualisieren
- Optional Healthchecks vor Umschaltung durchführen
# Beispiel für Nginx Upstream Switch
upstream backend {
server new_web:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
Rollback-Strategie
Für den Fall, dass Probleme auftreten, sollte die alte Umgebung weiterhin verfügbar sein:
- Blue-Green Deployment Prinzip anwenden
- Alte Container und Volumes beibehalten, bis neue Umgebung stabil läuft
- Schnelle Rückkehr durch Reverse Proxy oder DNS-Umschaltung möglich
Best Practices
- Versionierte Images für reproduzierbare Deployments
- Automatisierte Backups vor Migration
- Healthchecks und Monitoring aktivieren
- Netzwerke und Ports sauber trennen
- Ressourcenlimits beachten, um Überlastungen zu vermeiden
- Dokumentation der Umgebungen und Ports
- Regelmäßige Tests von Migrationen in Staging
Monitoring nach Migration
Nach Abschluss der Migration ist ein intensives Monitoring entscheidend:
docker ps --format '{{.Names}} {{.Status}} {{.Ports}}'
docker-compose -f docker-compose.override.prod.yml logs -f
curl http://newserver/health
- Überwacht Status und Erreichbarkeit aller Services
- Logs helfen bei der schnellen Diagnose von Fehlern
- Ermöglicht die frühzeitige Identifikation von Performance-Engpässen
Zusammenfassung
Eine Container-Migration ohne Downtime erfordert sorgfältige Planung: Zielserver vorbereiten, Images und Volumes sichern, Compose-Dateien übertragen, neue Umgebung parallel starten, Daten synchronisieren und Traffic umschalten. Mit Healthchecks, Monitoring, Rollback-Strategien und Versionierung können Sie eine stabile, sichere Migration durchführen, die den Betrieb der Anwendungen während des gesamten Prozesses gewährleistet.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











