Sicherung und Übertragung vollständiger Daten von einem Docker-Container auf einen anderen Server
Eine Schritt-für-Schritt-Anleitung zum Sichern und Migrieren von Docker-Daten von einem Server auf einen anderen, inklusive Sicherheits- und Optimierungstipps.

Sicherung und Übertragung vollständiger Daten von einem Docker-Container auf einen anderen Server

Dieser Artikel zeigt Ihnen sichere Methoden zum Sichern und Migrieren von Docker-Containerdaten auf einen anderen Server. Anhand praktischer Beispiele und Sicherheitstipps hilft Ihnen dieser Leitfaden, potenzielle Risiken zu minimieren und den Prozess zu optimieren.
0 Aktien
0
0
0
0

Wie kann ein vollständiger und sicherer Docker-Container auf einen anderen Server verschoben werden?

Eine vollständige Sicherung und Migration eines Docker-Containers umfasst drei Hauptkomponenten: Bild, Daten (Volumes oder Bind-Mounts) Und Konfiguration/Metadaten. Diese Schritt-für-Schritt-Anleitung beschreibt sichere, fehlerfreie und reversible Methoden zur Migration containerisierter Dienste (einschließlich Webanwendungen und Datenbanken).

Allgemeines und Voraussetzungen

Bevor Sie beginnen, stellen Sie bitte sicher, dass Sie Folgendes haben:

  • SSH-Zugriff auf beiden Servern mit dem entsprechenden Benutzer oder Root-Rechten.
  • Installieren Sie Docker (und gegebenenfalls docker-compose) auf dem Quell- und Zielsystem. Kurzes Installationsbeispiel:
curl -fsSL https://get.docker.com | sh
# or follow your distribution guide
  • Prüfen Sie, ob ausreichend Speicherplatz für die Archive vorhanden ist.
  • SSH-Schlüssel für sichere Übertragung und Tools wie rsync Oder SCP-1811.
  • Planung von Serviceausfallzeiten oder Methoden mit geringer Verzögerung.

Zu prüfende erste Befehle:

docker ps -a
docker volume ls
df -h
du -sh /var/lib/docker/volumes/*

Backup- und Migrationsstrategien – Die richtige Methode auswählen

Drei Schlüsselkomponenten für einen vollständigen Übergang:

  • Bild Container (Code/Binärdateien)
  • Stabile Daten (Volumes oder Bind Mounts)
  • Konfigurationen und Metadaten (docker-compose.yml, Umgebungsvariablen, Netzwerke, Geheimnisse)

Gängige Methoden:

  • docker export / docker import: Beinhaltet das Container-Dateisystem, überträgt aber keine Metadaten und benannten Volumes.
  • docker save / docker loadGeeignet für erstellte Bilder.
  • Datensicherung Als tar-Archiv mit rsync/scp übertragen oder auf S3 hochladen.
  • Verwendung eines privaten Registers Für Push/Pull-Bilder.
  • Management-Tools verwenden Ähnlich wie docker-compose oder Kubernetes, um den Dienst mit Definitionen neu zu erstellen.

Szenario 1 – Lokales Image und benanntes Volume (z. B. Webanwendung + MySQL)

Voraussetzung: Webcontainer und MySQL mit einem Volume namens mysql_data. Schritte in der angegebenen Reihenfolge:

1) Das Container-Image abrufen

Wenn Sie ein lokales Image haben oder Änderungen am Container vorgenommen wurden, ermitteln Sie zuerst den Image-Namen und die Container-ID und speichern Sie den Container gegebenenfalls.

docker ps --no-trunc --format '{{.Image}} {{.ID}}'
docker commit CONTAINER_ID myapp:backup-2026-07-14
docker save -o /tmp/myapp_backup_image.tar myapp:backup-2026-07-14

2) Benannte Volume-Sicherung

Sichere Methode mit einem Hilfscontainer, der den Inhalt des Volumes auf dem Host speichert:

docker run --rm \
  -v mysql_data:/data \
  -v /tmp/backup:/backup \
  ubuntu \
  bash -lc "cd /data && tar czf /backup/mysql_data.tar.gz ."

Für große Datenmengen können Sie einen schnelleren Kompressor wie zstd verwenden:

docker run --rm -v mysql_data:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar -I 'zstd -19' -cf /backup/mysql_data.tar.zst ."

3) Datenbank-Backup (bevorzugt)

Um die Konsistenz und Integrität der Datenbank zu gewährleisten, empfiehlt es sich, einen logischen Dump zu erstellen:

docker exec CONTAINER_ID sh -c 'exec mysqldump --all-databases --single-transaction -u root -p"$MYSQL_ROOT_PASSWORD"' > /tmp/all_databases.sql

Erläuterung: Diese Methode beseitigt die Abhängigkeit vom Volume-Dateisystem und erzeugt einen fehlerfreien logischen Dump.

4) Übertragung an den Zielserver

Für sichere und kontinuierliche Übertragungen, insbesondere bei großen Dateien, wird die Verwendung von rsync empfohlen.

rsync -avP -e "ssh -p 22" /tmp/myapp_backup_image.tar user@target:/tmp/
rsync -avP -e "ssh -p 22" /tmp/mysql_data.tar.gz user@target:/tmp/

Oder einfacher mit scp:

scp /tmp/myapp_backup_image.tar user@target:/tmp/

Notiz: Für große Datenübertragungen verwenden Sie rsync --partial --progress oder Tools wie rclone zu S3/MinIO.

5) Auf dem Zielserver wiederherstellen

Laden Sie das Image hoch und stellen Sie das Volume wieder her, starten Sie dann den Dienst mit docker-compose:

docker load -i /tmp/myapp_backup_image.tar
docker volume create --name mysql_data
docker run --rm -v mysql_data:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar xzf /backup/mysql_data.tar.gz"

Wenn Sie SQL Dump verwendet haben, erstellen Sie einen temporären MySQL-Container und führen Sie den Import durch:

docker run --name mysql-temp -e MYSQL_ROOT_PASSWORD=yourpassword -d mysql:8
cat /tmp/all_databases.sql | docker exec -i mysql-temp sh -c 'mysql -u root -p"$MYSQL_ROOT_PASSWORD"'

Platzieren Sie anschließend die docker-compose.yml- und env-Dateien und starten Sie den Dienst:

docker-compose -f docker-compose.yml up -d

6) Testen und Überprüfen

Vergessen Sie nicht, Protokolle, Datenintegrität und Prüfsummen zu überprüfen:

docker logs -f CONTAINER
sha256sum /tmp/mysql_data.tar.gz
sha256sum /tmp/backup/mysql_data.tar.gz

Szenario 2 – Container mit Bind-Mount (Host-Ordner)

Wenn der Container eine Bind-Mount-Verbindung verwendet (z. B. /srv/app/data auf dem Host), synchronisieren Sie einfach den Host-Pfad mit rsync oder tar, bereiten Sie denselben Pfad auf dem Ziel vor und starten Sie den Container.

rsync -avP -e "ssh" /srv/app/data/ user@target:/srv/app/data/

Starten Sie anschließend den Container auf dem Zielort mit demselben Bind-Mount-Pfad.

Szenario 3 – Migration ohne Ausfallzeiten für sensible Datenbanken

Um Serviceunterbrechungen zu reduzieren:

  • Replikation Implementieren Sie (MySQL-Replikation oder PostgreSQL-Streaming) und führen Sie nach der Synchronisierung eine Umstellung durch.
  • Initiales und finales rsync: Zuerst rsync für große Datenmengen, dann abschließend rsync mit den Optionen --inplace und --delete zum Synchronisieren kleiner Änderungen.
rsync -azP --delete --inplace /var/lib/docker/volumes/mysql_data/_data/ user@target:/var/lib/docker/volumes/mysql_data/_data/

Nach dem letzten rsync-Vorgang stoppen Sie den Dienst für einige Sekunden und starten ihn dann auf dem Zielsystem neu.

Vergleich der Transferoptionen (Vorteile/Nachteile)

  • Docker speichern/ladenSchnell für Bilder, aber nicht für Volumendaten.
  • Docker-Export/Import: Enthält das Container-Dateisystem, verliert aber Metadaten und Volumes.
  • rsync auf VolumesPräzise Steuerung und Wiederaufnahme, erfordert jedoch Management und Tests.
  • Logischer Datenbank-DumpZuverlässig und geeignet für die Migration zwischen verschiedenen DB-Versionen.
  • Privates Register: Bewährte Vorgehensweise für die Verteilung von Images auf mehrere Server; persistente Daten sollten separat übertragen werden.

Sicherheitshinweise (Sehr wichtig)

Einige praktische Sicherheitstipps:

  • Verwenden Sie SSH mit einem geschützten privaten Schlüssel und Zugriffsbeschränkungen.
  • Schützen Sie sensible Daten vor der Übertragung mit Tools wie beispielsweise gpg Oder Alter Verschlüsseln. Beispiel:
gpg --encrypt --recipient [email protected] /tmp/mysql_data.tar.gz

Überprüfen Sie nach der Übertragung immer die Integrität der Dateien mit sha256sum Überprüfen.

Am Zielort sollten Sie vor der Inbetriebnahme des Dienstes die Firewall und die Portbeschränkungen überprüfen und gegebenenfalls strenge Zugriffsbeschränkungen festlegen.

Praktische Tipps und Optimierung für Big Data

  • Kompression Mit zstd oder gzip mit dem entsprechenden Level: tar -I 'zstd -19' -cf backup.tar.zst /data
  • Verwenden Sie rsync mit der Option --partial, um die Verbindung fortzusetzen, falls diese instabil ist.
  • Bei Übertragungen von mehreren Terabytes empfiehlt es sich, physische Datenträger zu versenden oder Objektspeicher in der Nähe des Zielorts zu verwenden.

Docker-Kompatibilität und Versionen

Prüfen Sie vor der Migration die Docker-Versionen in Quell- und Zielumgebung. Normalerweise sind die Images kompatibel, aber einige neue Funktionen in Compose oder Treiber erfordern möglicherweise Anpassungen.

Auswahl eines Standorts und Servertyps für die Migration

Die Wahl des Rechenzentrumsstandorts und des Servertyps hängt von der Anwendung ab:

  • Handel und Devisenhandel: Standort in der Nähe der Exchange-Server für niedrigsten Ping.
  • Spiel: Geeignete Standorte in Europa/USA oder in der Nähe von Spielern mit Anti-DDoS-Systemen.
  • Künstliche Intelligenz und Rendering: GPU- und NVMe-Server für hohe E/A-Leistung.
  • Websites: Cloud-Server mit CDN und Standort in der Nähe der Hauptnutzer.

Unser Unternehmen bietet über 85 Standorte weltweit, GPU-Server und BGP-Netzwerke, die eine Vielzahl von Migrationsanforderungen abdecken können.

Vollständiges Beispiel: Web- und MySQL-Migration mit Docker Compose

Zusammenfassung der Schritte:

  1. Ausgabe der docker-compose-Konfiguration und der Erstellung des lokalen Images:
docker-compose -f docker-compose.yml config > /tmp/compose_config.yml
docker-compose build
docker save $(docker-compose images -q web) -o /tmp/web_image.tar
  1. Sicherungsvolumes:
docker run --rm -v project_mysql:/data -v /tmp/backup:/backup ubuntu bash -lc "cd /data && tar czf /backup/mysql_data.tar.gz ."
  1. Übertragen Sie die Dateien mit rsync an das Ziel und stellen Sie sie anschließend wieder her, bevor Sie docker-compose auf dem Ziel ausführen.

Abschließende Checkliste vor der Umstellung

  • Das Image und die Datenträger wurden gesichert und die Prüfsumme wurde verifiziert.
  • Umgebungsdaten und Geheimnisse sind gesichert oder in einem Tresor verwahrt.
  • Die Versionen von Docker und Compose wurden überprüft.
  • Das Zielnetzwerk und die Firewall sind konfiguriert.
  • Das Rollback-Szenario ist definiert.
  • Der endgültige Zeitplan wurde bekanntgegeben und die Überwachung ist bereit.

Häufig gestellte Fragen

Das könnte Ihnen auch gefallen