So kopieren/verschieben Sie einen Docker-Container auf einen anderen Host
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:
Suchen Sie den Container, den Sie kopieren möchten, und stoppen Sie dann die Instanz:
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:
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 mycontainerimage
stattdessen 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:
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:
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.
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:
Bild übertragen ohne eine Datei zu erstellen
Manchmal möchten Sie das Erstellen einer mycontainerimage.tar.gz
Datei 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 commit
oben 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 create
Befehl fort, der auf Ihre Situation zutrifft.
Starten Sie abschließend Ihren neu importierten Docker-Container, indem Sie ausführen, docker start
gefolgt vom Namen Ihres Containers.
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.
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