So teilen Sie Docker-Images mit anderen

Haben Sie ein Docker-Image erstellt, das Sie mit einem Kollegen teilen möchten? So können Sie ein Image verteilen, ohne dass der Empfänger Docker Build selbst ausführen muss.

Wenn Sie ein vorgefertigtes Image anstelle eines Dockerfiles teilen, können Sie sicher sein, dass Ihr Kollege genau dieselbe Software ausführt . Das erneute Ausführen des Builds kann zu einer subtil anderen Umgebung führen. Sie haben je nach Situation zwei Möglichkeiten, Ihr Bild zu verteilen.

Verwenden Sie eine Docker-Registrierung

Der einfachste Weg, ein Docker-Image freizugeben, besteht darin, es in eine Docker-Registrierung hochzuladen. Diese Funktionalität ist vollständig in die Docker-CLI integriert. Bei dieser Methode müssen Sie keine manuellen Dateiübertragungen durchführen.

Die Standardregistrierung ist Docker Hub. Auf diese Weise können Sie Bilder öffentlich teilen und erhalten auch ein privates Repository. Erstellen Sie ein Konto auf Docker Hub und führen Sie dann die Docker-Anmeldung in Ihrem Terminal aus. Geben Sie Ihre Kontodaten an, um die Docker-CLI mit Ihrem Konto zu verbinden.

Erstellen Sie als Nächstes Ihr Image wie gewohnt mit Docker-Build. Fügen Sie ein Tag hinzu, das mit Ihrem Docker Hub-Benutzernamen beginnt:

docker build -t my-account/my-image:latest . Werbung

Verwenden Sie dann den docker push-Befehl, um das markierte Image an Docker Hub hochzuschieben:

docker push my-account/my-image:latest

Jetzt ist Ihr Image sicher in Docker Hub gespeichert. Andere Benutzer können es mit den Befehlen docker pull oder docker run herunterziehen. Sie sind mit der Freigabe Ihres Images fertig!

Für die reale Verwendung reicht Docker Hub möglicherweise nicht aus. Wenn Sie Teil eines Entwicklungsteams sind, möchten Sie wahrscheinlich Images auf Ihrem eigenen Server statt in der öffentlichen Hub-Registrierung speichern. Sie können stattdessen einen selbst gehosteten Registrierungsserver erstellen, um privaten Speicher zu erhalten, der vollständig mit den Befehlen docker push und docker pull kompatibel ist. Auf diese Weise können Sie Bilder ganz einfach mit jedem teilen, der auf Ihre private Registrierung zugreifen kann.

Exportieren von Images

Wenn die Verwendung einer Registrierung nicht möglich ist, können Sie stattdessen Docker-Image-Archive manuell exportieren. Diese Funktionalität ist auch in die Docker-CLI integriert. Erstellen Sie Ihr Image und verwenden Sie dann den Befehl docker save, um ein Tar-Archiv mit seinem Inhalt zu erhalten:

docker save my-image:latest > my-image.tar

Der Export kann einige Augenblicke dauern. Docker enthält alles, was zum Neuerstellen des Images erforderlich ist – das sind alle Ebenen in Ihrem Dockerfile sowie die von Ihrem Basis-Image geerbten Ebenen. Das Archiv enthält auch Informationen zu den Tags, die mit dem Bild verknüpft sind.

Da die Ausgabe eine einfache Tar-Datei ist, können Sie sie jetzt beliebig verteilen. Archive können ziemlich groß sein, daher ist es normalerweise am besten, sie auf einen Dateiserver oder einen Cloud-Speicheranbieter hochzuladen.

Werbung

Um ein exportiertes Bild zu verwenden, führen Sie den Befehl docker load aus. Dies akzeptiert ein von docker save erzeugtes tar-Archiv als Eingabestream. Docker lädt den Inhalt des Archivs und fügt ihn Ihrer Liste lokaler Images hinzu.

docker load < my-image.tar

Sie sehen jetzt das neu importierte Bild in Ihrer Docker-Image-Ausgabe. Sie sind bereit, einen neuen Container mit Docker Run zu starten.

Das Exportieren und Importieren von Images erfordert einige zusätzliche Schritte gegenüber der Verwendung einer Docker-Registrierung. Sie müssen die Datei manuell zwischen den Clients übertragen. Folglich ist dieser Ansatz für den häufigen Gebrauch weniger geeignet, obwohl er auch seine Vorteile hat.

Die Konvertierung von Bildern in ein tar-Archiv kann für die langfristige Speicherung nützlich sein. Wenn der Speicherplatz auf Ihrem Registrierungsserver knapp wird, kann das Archivieren alter Images und das Hochladen ihrer Tars in den Backup-Dateispeicher eine kostengünstige Möglichkeit sein, etwas Kapazität zurückzugewinnen. Sie können das Image dennoch wiederherstellen, falls Sie dies in Zukunft benötigen.

Was ist mit “Docker-Export” ?

Docker hat einen weiteren exportbezogenen Befehl, docker export. Dies sollte nicht mit Docker Save verwechselt werden. Während save mit Bildern arbeitet, verwaltet der Export tatsächlich einzelne Container.

Der Docker-Export erzeugt ein tar-Archiv des Dateisystems eines Containers. Dies kann verwendet werden, um ein Replikat des Containers auf einem anderen Computer wiederherzustellen. Wenn Sie den Inhalt des Archivs überprüfen, sehen Sie, dass es sich nur um ein normales Linux-Root-Dateisystem mit Verzeichnissen wie /bin, /etc und /usr handelt.

docker export my-container > my-container.tar Advertisement

Der Docker-Export ist nützlich, wenn Sie einen Container zur späteren Wiederherstellung erstellen möchten. Containerarchive werden jedoch nicht so importiert, wie Sie es zunächst erwarten. Da ein Container eine laufende Live-Umgebung darstellt, können Sie nicht “importieren” einen direkt. Stattdessen wird beim Importieren eines Containerarchivs ein neues Image erstellt.

docker import my-container.tar my-image:latest

In diesem Beispiel nimmt Docker das Dateisystem in my-container.tar und erstellt automatisch ein neues Image namens my-image:latest. Dieser hat dasselbe Dateisystem, aber nicht dasselbe Basis-Image oder dieselbe Docker-Konfiguration wie der ursprüngliche Container, den Sie exportiert haben.

VERWANDTE: Erste Schritte mit dem neuen Docker-Container von Github Registry

Zusammenfassung

Docker macht es einfach, Anwendungs-Images und Entwicklungsumgebungen für Ihre Mitarbeiter freizugeben. Normalerweise ist es am besten, Bilder in ein zentrales Repository zu verschieben, aus dem alle anderen ziehen können. In einigen Szenarien kann es sinnvoller sein, ein Image in ein Archiv zu exportieren, das Sie manuell verteilen.

Mit Docker können Sie auch das Dateisystem eines Containers zur späteren Wiederherstellung in ein Image exportieren. Seien Sie vorsichtig, wenn Sie dies verwenden, da es sich nicht um eine exakte Rekonstruktion handelt und nicht alle Dateisystemdaten enthalten sind. Alle Volumes, die in den ursprünglichen Container gemountet sind, werden nicht in das Dateisystemarchiv aufgenommen, daher sollten Sie Schritte unternehmen, um diese separat zu sichern.


Posted

in

by

Tags: