2017-11-14 3 views
1

Ich bin auf der Suche nach einem einfachen Lernprogramm zum Testen der Containermigration zwischen zwei VMs. Ich habe einige Videos gesehen, aber sie zeigen nicht genau, wie sie das gemacht haben oder haben selbst kein gutes Tutorial gefunden. Ich bin neu in Docker, also wollte ich nur testen, wie diese Migration funktioniert. Also, es wird sehr nett sein, dass Sie mir einige Tutorials/Links geben können, die klar erklären, wie es geht. Ihre Hilfe wird wirklich geschätzt, danke :)Containermigration in Docker

+0

Können Sie mehr darüber klar werden, was Sie unter „Migration“ verstehen? – jonasheinisch

+0

@jonasheinisch Senden eines Containers von einer virtuellen Maschine an eine andere virtuelle Maschine. –

Antwort

-1

Um Bilder zu exportieren, verwenden Sie docker save, um sie wieder zu importieren, verwenden Sie docker load.

Container zu exportieren, verwenden docker export, um sie wieder zu importieren (AS IMAGE ohne Metadaten), docker import verwenden.

Sie können mehr über die Befehle und deren Verwendung mit docker COMMAND --help erfahren.

Leider können Sie laufende Container nicht migrieren, daher empfehle ich Ihnen, die docker run Befehle notieren, die Sie verwendet haben, um die Container zu starten und dann auf dem anderen Knoten erneut zu starten.

0

Sie können eine containet Export von

docker export <container-name> -o container.tar 

läuft dann können Sie den Teer in eine andere VM kopieren und importieren von

docker import container.tar <image-name> 

WARNINIG läuft:

Der Export Exportierte Volumes werden nicht als Teil des Tarballs exportiert. Überprüfen Sie die documentation für weitere Informationen.

Wenn Sie ein Volumen haben, und Sie wollen, dass es auf die neue VM migrieren, überprüfen How to port data-only volumes from one host to another?

2

Sie Kontrollpunkt verwenden können/Restore-Tools wie CRIU. https://criu.org/Live_migration Sie müssen alle Prozesse und den Speicherstatus Ihres Containers prüfen, bevor Sie ihn auf einen anderen Host migrieren. Im Empfänger-Host müssen Sie den gleichen Container erstellen und dann den von Ihnen übertragenen Prüfpunkt wiederherstellen. diese Besuche:

https://circleci.com/blog/checkpoint-and-restore-docker-container-with-criu/

https://criu.org/Docker

https://forums.docker.com/t/docker-checkpoint-restore-on-another-host/27427/3

2

Ich unterstütze wirklich Antwort des Farhood. Ich möchte hier ausführlich schreiben. Am Anfang unterstützt Docker "Checkpoint und Restore" eines Contianers, dank der CRIU-Integration mit Docker. Aber es ist in der experimentelle Modus so vorsichtig sein.

Was ist CRIU? CRIU ist ein Software-Tool für das Linux-Betriebssystem. Mit diesem Tool können Sie eine laufende Anwendung (oder einen Teil davon) einfrieren und sie als eine Sammlung von Dateien auf der Festplatte prüfen. Sie können dann die Dateien verwenden, um die Anwendung wiederherzustellen und sie genau so auszuführen, wie sie während der Zeit des Einfrierens war.

Anwendung von Checkpoint/Restore

  • Mit diesem können Sie eine Anwendung Checkpoint und die Dateien kopieren (von Checkpoint) auf dem Zielcomputer und starten Sie die Anwendung, die Dateien mit der als bekannt Live-Migration,

  • Sie können einen Kontrollpunkt einer Anwendung übernehmen und die Anwendung in den vorherigen Zustand wiederherzustellen, die nichts anderes als die Snapshot-Erstellung ist.

  • "Checkpointing and restoring" kann beim Debuggen einer Anwendung verwendet werden. Alle Prozesse der Anwendung werden kurz vor einem Fehler überprüft und später (möglicherweise auf einem einzelnen Host) für debugging neu gestartet.

  • Bootzeit optimieren: Überprüfen Sie den Startvorgang eines Betriebssystems, und beim nächsten Mal kann dieser Prüfpunkt zum Starten eines Betriebssystems verwendet werden.

Derzeit CRIU ist das einzige Werkzeug zur Verfügung, um einen Checkpoint und einen Container wiederherzustellen. Ich zeige Ihnen einfache Schritte für die obige Operation.

Schritt 1: Aktivieren Sie experimentelle Funktionen (inkl. CRIU).

echo "{\"experimental\": true}" >> /etc/docker/daemon.json 
systemctl restart docker 

Schritt 2: Lasst uns einen einfachen Behälter bereitstellen, die Zahlen zu drucken.

docker run -d --name looper --security-opt seccomp:unconfined busybox \ 
     /bin/sh -c 'i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done' 

Schritt 3: Lassen Sie uns überprüfen die Anwendung ausgeführt wird, indem die Protokolle zu drucken.

docker logs looper 

Schritt 4: Lassen Sie uns Kontrollpunkt dieser Behälter mit dem folgenden Befehl Docker. Der Name des Checkpoints ist "checkpoint1". Wir werden diesen Namen verwenden, um den Container wiederherzustellen.

docker checkpoint create looper checkpoint1 

Schritt 4: Sie können den Kontrollpunkt im Verzeichnis überprüfen.

/var/lib/docker/containers/<container-ID>/checkpoints/<checkpoint name>/ 

Schritt 5: Lassen Sie uns den Behälter in den vorherigen Zustand mit dem folgenden Befehl Docker wiederherzustellen.

docker start --checkpoint checkpoint1 looper 

Schritt 6: Wie überprüfen? Drucken Sie die Protokolle des Containers vor und nach dem Schritt 5.

(Containermigration) Wie Wiederherstellen des Containers in verschiedenen VM? Die Lösung besteht darin, die Checkpoint-Dateien (des Containers) auf den Zielknoten zu kopieren und sie zum Wiederherstellen des Containers zu verwenden. Auf dem Zielknoten sollte Docker im experimentellen Modus ausgeführt werden.

Ich füge hiermit eine aktuelle Papier auf Docker Container Migration. Sie suchen nach diesem Papier.

http://www.cs.toronto.edu/~sahil/suneja-icdcs17.pdf