So kopieren/verschieben Sie einen Docker-Container auf einen anderen Host

So kopieren/verschieben Sie einen Docker-Container auf einen anderen Host
Ein Foto einer Person, die an einem Computertisch arbeitet.

Da Docker-Container kleine Software-Boxen sind, können Sie sie problemlos kopieren und von Computer zu Computer verschieben. Möglicherweise haben Sie an einer Docker-Instanz auf Ihrem lokalen Computer gearbeitet und beschlossen, diese auf einen leistungsstärkeren Server zu verschieben. Oder vielleicht möchten Sie Ihren benutzerdefinierten Container einfach auf mehreren Computern bereitstellen und ihn „kopieren und einfügen“. In anderen Fällen sind Sie möglicherweise mit einem Cloud-Computing-Anbieter unzufrieden und möchten zu einem anderen wechseln. Hier zeigen wir Ihnen, wie Sie Ihr vorhandenes Docker-Container-Image und Ihre Datenvolumes von einem Linux-Host auf einen anderen verschieben.

Container-Image vom Quellhost speichern

Beginnen Sie mit der Auflistung der verfügbaren Docker-Container, die auf Ihrem System laufen. In meinem Fall möchte ich meinen Nginx-Docker-Container auf eine neue Maschine exportieren:

Ein Terminal, das die verfügbaren Docker-Container für ein System hervorhebt.

Suchen Sie den Container, den Sie kopieren möchten, und stoppen Sie dann die Instanz:

Ein Terminal, das die Ausgabe des Docker-Stop-Befehls anzeigt.

Ein Docker-Container wird aus einem generischen, anfänglichen Image erstellt. Im Laufe der Zeit fügen Sie diesem Basis-Image Ihre eigenen Änderungen hinzu. Prozesse, die im Container ausgeführt werden, speichern möglicherweise auch ihre eigenen Daten oder nehmen andere Änderungen vor. Um all dies beizubehalten, übertragen Sie den aktuellen Status Ihres Containers in ein neues Image:

Ein Terminal, das die Ausgabe des Docker-Commit-Befehls anzeigt, der aus dem aktuell ausgeführten Image ein neues Image erstellt.

Beachten Sie, dass diese Aktion die Instanz pausiert, wenn sie gerade ausgeführt wird, während ihr Inhalt gespeichert wird. Wenn dies ein Problem darstellt, können Sie diese Pause vermeiden, indem Sie docker commit -p=false NAME_OF_INSTANCE mycontainerimagestattdessen Folgendes eingeben. Tun Sie dies jedoch nur, wenn es unbedingt erforderlich ist. In diesem Fall steigt die Wahrscheinlichkeit, dass ein Image mit inkonsistenten/unvollständigen Daten erstellt wird.

Speichern Sie jetzt Ihr neu festgeschriebenes Docker-Container-Image in einer Archivdatei:

Verwenden Sie Ihre bevorzugte Dateiübertragungsmethode und kopieren Sie Ihre .tar-Datei auf den Host, auf den Sie Ihren Docker-Container verschieben möchten. Beispielsweise überträgt der folgende Befehl mein Nginx-Docker-Image mithilfe von scp:

Exportieren eines Docker-Volumes aus Ihrem Container

Einer der Nachteile beim Speichern eines Docker-Images besteht darin, dass es nicht mit den Docker-Zubehörteilen geliefert wird, die Sie zusammen mit Ihrem Container eingerichtet haben. Dazu gehören alle Netzwerkbindungsmounts und die Volumes, die Sie zum Speichern Ihrer persistenten Daten erstellt haben.

Um Ihr Datenvolumen ordnungsgemäß zu exportieren, installieren Sie zunächst Git auf Ihrem lokalen Computer:

Führen Sie den folgenden Befehl aus, um das Volume-Exportskript für Docker herunterzuladen:

Stellen Sie sicher, dass das Exportskript über die richtigen Berechtigungsbits verfügt, und kopieren Sie es dann in das Verzeichnis „/usr/local/bin:“ Ihres Computers.

Testen Sie, ob Ihr Skript ordnungsgemäß funktioniert, und extrahieren Sie dann alle zugehörigen Volumes für Ihren Container:

Ein Terminal, das den Vorgang zum Sichern aller zugehörigen Datenvolumes für einen Docker-Container zeigt.

Senden Sie Ihre neu archivierten Docker-Volume-Dateien an Ihren Remote-Computer:

Container-Image auf Zielhost laden

Melden Sie sich bei Ihrem Remote-Host an und führen Sie dann den folgenden Befehl aus, um es in den Docker-Daemon Ihres Remote-Computers zu laden:

Verwenden Sie es docker create, um Ihr Docker-Container-Image mit den ursprünglichen Ausführungsflags von Ihrem Quellcomputer neu zu initialisieren. Beispielsweise war bei meinem Nginx-Docker-Container ursprünglich Port 80 dem Port 8080 meines Hostcomputers zugeordnet:

Führen Sie Ihren neu importierten Docker-Container aus:

Bestätigen Sie, dass Ihr importiertes Image ordnungsgemäß funktioniert, indem Sie alle aktiven Container im System auflisten:

Ein Terminal, das dasselbe Docker-Container-Image zeigt, das auf einem anderen System ausgeführt wird.

Importieren eines Docker-Volumes in Ihren Container

Um eine Docker-Volume-Datei im TAR-Format zu importieren, laden Sie zuerst Git auf Ihren neuen Host herunter:

Laden Sie genau wie bei Ihrem ursprünglichen System das Hilfsskript docker-volume.sh herunter, setzen Sie seine Berechtigungsbits auf „Ausführen“ und kopieren Sie es dann in das Verzeichnis „/usr/local/bin“ Ihres neuen Computers.

Ein Terminal, das den Vorgang des Abrufens und Installierens des Docker Volume-Skripts zum Sichern von Containerdaten zeigt.

Erstellen Sie einen neuen Docker-Container mit Ihrer exportierten Image-Datei:

Führen Sie das Skript docker-volume.sh mit Ihrer ursprünglichen TAR-Datei aus, um sie in den Docker-Daemon Ihres neuen Systems zu laden:

Starten Sie Ihren neuen Docker-Container, indem Sie den folgenden Befehl ausführen:

Testen Sie, ob Ihr Container Ihr Volumen ordnungsgemäß lädt, indem Sie sich seine internen Konfigurationsdaten ansehen:

Ein Terminal, das die importierten Volumendaten auf der neuen Maschine hervorhebt.

Bild übertragen ohne eine Datei zu erstellen

Manchmal möchten Sie das Erstellen einer mycontainerimage.tar.gzDatei vielleicht überspringen. Vielleicht haben Sie nicht genügend Speicherplatz, da der Container viele Daten enthält. Sie können das Image mit einem Befehl auf dem Zielhost speichern, übertragen und laden. Nachdem Sie den docker commitoben beschriebenen Befehl ausgeführt haben, können Sie Folgendes verwenden:

Es sollte auch unter Windows funktionieren, da es jetzt über einen integrierten SSH-Client verfügt (PuTTY ist nicht mehr erforderlich).

Fahren Sie mit dem docker createBefehl fort, der auf Ihre Situation zutrifft.

Ein Terminal, das den Prozess der Erstellung eines neuen Docker-Containers zeigt, nachdem sein Image über eine SSH-Pipe verschoben wurde.

Starten Sie abschließend Ihren neu importierten Docker-Container, indem Sie ausführen, docker startgefolgt vom Namen Ihres Containers.

Ein Terminal, das den Vorgang des Startens eines neuen Containers zeigt und bestätigt, dass er ordnungsgemäß funktioniert.

Verwenden von Docker Compose zum Verschieben einer gesamten Docker-Bereitstellung

Mit seinem Compose-Plugin ermöglicht Docker das Erstellen, Konfigurieren und Ausführen komplexer Programme, ohne sich um den zugrunde liegenden Software-Stack des Servers kümmern zu müssen. Dies wiederum ermöglicht Ihnen die Erstellung reproduzierbarer Anwendungsbereitstellungen auf verschiedenen Linux-Systemen.

Um mit der Migration Ihres vorhandenen Docker-Setups zu Docker Compose zu beginnen, stellen Sie zunächst sicher, dass das Plugin derzeit in Ihrem System vorhanden ist:

Erstellen Sie in Ihrem Home-Verzeichnis einen neuen Ordner für Ihre Docker Compose-Installation:

Verwenden Sie Ihren bevorzugten Texteditor, um eine „docker-compose.yml“-Datei für Ihre Anwendung zu erstellen:

Fügen Sie den folgenden Codeblock in Ihre Compose-Datei ein und passen Sie ihn dann Ihren spezifischen Anforderungen entsprechend an:

Speichern Sie Ihre neue Compose-Datei und führen Sie dann den folgenden Befehl aus, um sie zu starten:

Testen Sie abschließend, ob Ihre Compose-Bereitstellung ordnungsgemäß funktioniert. In meinem Fall teste ich meinen Nginx-Docker-Container, indem ich einen Webbrowser öffne und zu „localhost:8080“ navigiere.

Ein Screenshot, der den importierten Nginx-Docker-Container zeigt, der auf seinem neuen Computerhost ordnungsgemäß funktioniert.

Zu lernen, wie Sie Ihren Docker-Container auf andere Linux-Hosts kopieren und verschieben, ist nur eine der wenigen Aufgaben, die Sie mit Ihrem Computer erledigen können. Entdecken Sie diese wunderbare Welt des Self-Hostings, indem Sie mit Docker einen Minecraft-Server unter Linux installieren.

Bildnachweis: Max Duzij via Unsplash . Alle Änderungen und Screenshots von Ramces Red.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert