Kopieren / Verschieben eines Docker-Containers auf einen anderen Host

Cum să copiați / mutați un container Docker pe o altă gazdă
⏱️ 5 min read

Da Docker-Container sozusagen kleine Software-Boxen sind, können Sie sie kopieren und von Computer zu Computer verschieben. Dies wird jedoch nicht oft diskutiert, wahrscheinlich weil größere Organisationen ihre eigenen Repositorys einrichten, in denen sie ihre eigenen Images anpassen und nach Belieben auf ihren Servern verteilen können. Sie sollten sich jedoch nicht die Mühe machen müssen, eine eigene Vertriebslinie einzurichten, wenn Sie gelegentlich einen oder mehrere Container bewegen müssen.

Möglicherweise haben Sie an einer Docker-Instanz auf Ihrem lokalen Computer gearbeitet und beschlossen, diese auf einen leistungsstärkeren Server zu verschieben. Oder Sie möchten Ihren benutzerdefinierten Container einfach auf mehreren Computern bereitstellen, 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. Unabhängig von der Situation gibt es ein ziemlich einfaches Verfahren, das im Folgenden detailliert beschrieben wird.

Speichern Sie das Container-Image vom Quellhost

Es ist nicht erforderlich, den Container zuerst anzuhalten, es wird jedoch dringend empfohlen, dies zu tun. Sie erstellen eine Momentaufnahme der Daten in Ihrer Docker-Instanz. Wenn es währenddessen ausgeführt wird, besteht eine geringe Wahrscheinlichkeit, dass einige Dateien in Ihrem Snapshot unvollständig sind. Stellen Sie sich vor, jemand lädt eine 500-MB-Datei hoch. Wenn 250 MB hochgeladen wurden, geben Sie die aus docker commit Befehl. Der Upload wird dann fortgesetzt, aber wenn Sie dieses Docker-Image auf einem anderen Host wiederherstellen, sind möglicherweise nur 250 MB von den 500 MB verfügbar.

Wenn Sie können, stoppen Sie zuerst die Instanz.

Ein Docker-Container besteht aus einem generischen Anfangsbild. 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, können Sie diesen neuen Status einem neuen Image zuweisen.

Wenn die Instanz gerade ausgeführt wird, wird sie durch diese Aktion angehalten, während der Inhalt gespeichert wird. Wenn Sie Ihrem Container viele Daten hinzugefügt haben, dauert dieser Vorgang länger. Wenn dies ein Problem ist, können Sie diese Pause durch Eingabe vermeiden docker commit -p=false NAME_OF_INSTANCE mycontainerimage anstelle des nächsten Befehls. Tun Sie dies jedoch nur, wenn dies unbedingt erforderlich ist. In diesem Fall steigt die Wahrscheinlichkeit, ein Bild mit inkonsistenten / unvollständigen Daten zu erstellen.

In diesem Tutorial wurde ein generischer Name für das resultierende Bild ausgewählt. mycontainerimage. Sie können diesen Namen ändern, wenn Sie möchten. Wenn Sie dies tun, denken Sie daran, es in allen nachfolgenden Befehlen zu ersetzen, auf die Sie stoßen.

Commit für Docker-Verschiebungscontainer

Speichern Sie dieses Bild nun in einer Datei und komprimieren Sie es.

Verwenden Sie als Nächstes Ihre bevorzugte Dateiübertragungsmethode und kopieren Sie sie mycontainerimage.tar.gz zu dem Host, auf den Sie Ihren Container migrieren möchten.

Laden Sie das Container-Image auf den Zielhost

Nachdem Sie sich bei dem Host angemeldet haben, auf den Sie das Image übertragen haben, importieren Sie es in Docker.

Da Sie diesen Container hier nie initialisiert haben, können Sie ihn nicht starten docker start noch. Geben Sie stattdessen denselben Befehl ein, den Sie in der Vergangenheit verwendet haben, als Sie diese Docker-Instanz zum ersten Mal ausgeführt haben. Der einzige Unterschied besteht jetzt darin, dass Sie am Ende “mycontainerimage” anstelle des Bildes verwenden, das Sie in der Vergangenheit verwendet haben.

Der nächste Befehl ist nur ein Beispiel. Kopieren Sie dies nicht und fügen Sie es nicht ein, es sei denn, es trifft auf Sie zu. (Beim ersten Ausführen des Bildes waren keine speziellen Parameter erforderlich.)

Im Gegensatz dazu ist das Folgende ein Beispiel für einen Befehl where-Parameter --publish war erforderlich, um Port 80 auf dem Host-Computer an Port 80 auf dem Container weiterzuleiten:

Danach können Sie diesen Container normal stoppen und starten, mit docker stop und docker start Befehle.

Bild übertragen, ohne eine Datei zu erstellen

Manchmal möchten Sie möglicherweise das Erstellen eines überspringen mycontainerimage.tar.gz Datei. Möglicherweise haben Sie nicht genügend Speicherplatz, da der Container viele Daten enthält. Sie können das Image mit einem Befehl speichern, komprimieren, übertragen, dekomprimieren und auf den Zielhost laden. Nach dem Ausführen der docker commit Befehl im ersten Abschnitt besprochen, können Sie diesen verwenden:

Es sollte auch unter Windows funktionieren, da es jetzt einen eingebauten SSH-Client hat (PuTTY nicht mehr erforderlich).

Fahren Sie anschließend mit dem fort docker run Befehl, der auf Ihre Situation zutrifft.

Fazit

docker save und docker load eignen sich hervorragend als Ad-hoc-Lösung für das gelegentliche Bewegen von Containern. Denken Sie jedoch daran, dass Sie, wenn Sie dies häufig tun, stattdessen möglicherweise Ihr eigenes privates Repository einrichten möchten.

Bildnachweis: Medizinischer Dienst der Luftwaffe

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Benutzerbild von Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Das könnte dich auch interessieren …

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x