Wenn Docker neu für Sie ist, müssen Sie möglicherweise noch herausfinden, wie Sie Container und Images mit anderen Entwicklern oder Computern teilen können. Aber ist es möglich, Container zu teilen? Ja! Lassen Sie den docker save
image-Befehl und den docker export
Bildbefehl macht den Trick!
In diesem Tutorial erfahren Sie, wie Sie Container und Bilder zum Teilen speichern und exportieren, indem Sie Docker-Befehle ausführen.
Bereit? Fangen wir an!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie Folgendes haben:
- In diesem Tutorial wird Docker Desktop oder Engine, installiert als Version 20.10.7, verwendet.
- Jedes Docker-kompatible Betriebssystem, Ubuntu wird in diesem Tutorial verwendet.
Erstellen einer Basis-Docker-Anwendung
Bevor Sie mit dem Exportieren oder Speichern von Docker-Containern und -Images beginnen, müssen Sie zunächst eine Anwendung erstellen, die Sie für Freigabezwecke verwenden. Sie erstellen eine einfache arithmetische Lösung als Docker-Beispielanwendung über eine Befehlszeilenumgebung.
1. Erstellen Sie eine Datei für Ihr Projekt mit dem Namen Dockerfile
, und fügen Sie den folgenden Code in die neu erstellte Dockerfile
ein .
Der folgende Code führt eine grundlegende arithmetische Operation aus, die zu einem Wert von 10 führt.
# busybox provides Unix utilities in a single executable file,
# which enables you to do some arithmetic.
FROM busybox
# Performs a basic arithmetic operation that results in a value of 10.
CMD echo $(((20*5)/10))
2. Als nächstes öffnen Sie Ihr Terminal und führen den docker build
aus Befehl unten, um die Anwendung mit dem Namen (arithmetic
) im Arbeitsspeicherort (.
).
docker build --tag arithmetic .
Wenn Sie Linux verwenden, müssen Sie möglicherweise den sudo-Befehl voranstellen, um zu vermeiden, dass der Fehler „Zugriff verweigert“ angezeigt wird, wie dieser:
sudo docker build --tag arithmetic
.sudo
hinzufügen Befehl erhöht den Befehl als Administrator.
3. Führen Sie den folgenden Befehl aus, um die von Ihnen erstellte Docker-Anwendung auszuführen (arithmetic
). Beim Ausführen der Docker-App wird auch automatisch ein Container für Ihre Anwendung erstellt.
docker run arithmetic
Docker-Container exportieren
Nachdem Sie nun eine Basis-Docker-Anwendung haben, ist es an der Zeit, den Export eines Docker-Containers zu behandeln. Das Erstellen einer riesigen Anwendung dauert lange und kann mühsam sein, wenn Sie den Container nur mit Ihrem Team teilen möchten. Gibt es also eine schnellere Möglichkeit, den Container zu teilen? Ja!
Anstatt die Anwendung direkt aus einer Docker-Datei zu erstellen, exportieren Sie den Docker-Container.
1. Führen Sie den docker
aus Befehl unten, um alle aufzulisten (ls --all
) containers
auf Ihrer Maschine verfügbar. Notieren Sie sich die CONTAINER ID
des Containers, den Sie freigeben möchten, da Sie ihn im nächsten Schritt zum Exportieren des Containers benötigen.
Beachten Sie, dass Sie nur Container exportieren können, keine Bilder.
docker container ls --all
2. Führen Sie als Nächstes den folgenden Befehl zum export
aus den Docker-Container Ihrer Wahl (container-id
). Ersetzen Sie container-id
mit der Container-ID, die Sie sich in Schritt 1 notiert haben.
Beim Exportieren speichern Sie das Dateisystem des Containers in einer .tar Archiv (arithmetic.tar
).
docker export container-id > arithmetic.tar
3. Überprüfen Sie schließlich Ihren Projektordner in Ihrem Dateimanager und Sie werden sehen, dass eine neue .tar Archiv wurde erstellt (arithmetic.tar ). Da Sie den Container in eine .tar exportiert haben archivieren, können Sie es jetzt mit jedem teilen.
Importieren von Docker-Containern
Anstatt zu exportieren, müssen Sie vielleicht einen Docker-Container importieren, den ein Teamkollege mit Ihnen geteilt hat. Wenn ja, den docker import
Befehl ist, was Sie brauchen. Der docker import
Der Befehl nimmt das exportierte Dateisystem und konvertiert es in ein Bilddateisystem, das Sie auf Ihrem Computer ausführen können.
1. Führen Sie den folgenden docker
aus Befehl zum import
ein Container (arithmetic.tar
) und in ein Bild umwandeln. Beim Import müssen Sie ein Tag anhängen (latest
) und benennen Sie das Bild (put_any_name_here
), Wie nachfolgend dargestellt.
docker import arithmetic.tar put_any_name_here:latest
2. Führen Sie als Nächstes den folgenden Befehl aus, um alle vorhandenen Docker-Images aufzulisten, damit Sie überprüfen können, ob ein neues Image vorhanden ist.
docker images
Unten sehen Sie, dass ein neues Docker-Image vorhanden ist.
3. Führen Sie nun den docker run
aus Befehl unten, um die Shell zu öffnen (sh
) für das importierte Bild. Der Container läuft interaktiv und wird an Ihr Terminal angehängt (-i
und -t
Flaggen).
docker run -i -t put_any_name_here:latest sh
Sie können an der Eingabeaufforderung unten (/ #) erkennen, dass Sie sich jetzt in der Shell des importierten Bildes befinden.
4. Führen Sie abschließend den folgenden Befehl aus, um zu sehen, ob das Bild wie erwartet funktioniert.
echo $(((20*5)/10))
Wenn das Bild funktioniert, erhalten Sie eine Ausgabe von 10 , Wie nachfolgend dargestellt.
Wenn Sie versuchen, das Image direkt auszuführen, erhalten Sie einen Fehler, wie unten gezeigt, da das importierte Image ein Dateisystem-Image ist.
Speichern von Bildern über Docker Save Image
Vielleicht möchten Sie lieber ein Docker-Image als einen Container speichern. Wenn ja, gehen Sie mit dem docker save
Bildbefehl stattdessen. Im Gegensatz zum docker export
Befehl, der docker save
Mit dem Befehl können Sie ein oder mehrere Bilder direkt in einem tar-Archiv speichern und mit anderen teilen.
Beachten Sie, dass Sie nur Docker-Images speichern und laden können, keine Container.
- Führen Sie den folgenden Befehl aus, um ein Docker-Image (arithmetisch) in Ihrer bevorzugten .tar-Datei zu speichern Archiv (
arm_image.tar
). Sie können jetzt die .tar-Datei teilen mit anderen Entwicklern archivieren, damit sie das Bild laden können.
docker save arithmetic > arm_image.tar
2. Führen Sie nun den folgenden Befehl aus, um ein Verzeichnis mit dem Namen Ihrer Wahl zu erstellen (mkdir arm
). Aber für diese Demo heißt das Verzeichnis arm
. Der Befehl extrahiert dann das Bild aus der .tar Archiv (-xf arm_image.tar
) in das neue Verzeichnis (arm
).
Extrahieren des Inhalts der .tar Archiv können Sie überprüfen, ob das Bild, das Sie in der .tar gespeichert haben Archiv existiert.
mkdir arm && tar -xf arm_image.tar -C arm
3. Führen Sie abschließend den tree
aus Befehl unten, um den Verzeichnisbaum des Bildes anzuzeigen, das Sie in ~/arm
extrahiert haben Verzeichnis. tree ~/arm
Unten sehen Sie die Dateien und Unterverzeichnisse in dem Verzeichnis, in das Sie das Docker-Image extrahiert haben.
Wenn Sie vorhaben, Ihr Docker-Image auf dem Docker-Hub freizugeben, führen Sie am besten
docker save
aus Befehl. Wieso den? Mit demdocker save command
, speichern Sie das Bild im Wesentlichen genau so, wie es ausgeführt werden soll. Außerdem können Sie Bilder nur auf dem Docker-Hub posten, also auf jeden Fall dendocker export command
ist keine gute Option.
Laden von Docker-Images
Angenommen, Sie haben bereits ein Image zu Sicherungs- oder Freigabezwecken gespeichert, wie würden Sie es auf einen Computer laden? Keine Sorge, der docker load
Befehl kann helfen. Das docker load
Mit dem Befehl können Sie ein Image oder Repository auf Ihren Computer laden und sowohl Images als auch Tags wiederherstellen.
Um besser zu sehen, wie der docker load
Befehl funktioniert, löschen Sie alle Docker-Images, die Sie zuvor erstellt haben.
1. Führen Sie den folgenden Befehl aus, um alle Docker-images
aufzulisten in Ihrer Maschine.
docker images
Unten sehen Sie, dass es zwei verfügbare Bilder gibt. Notieren Sie sich die BILD-ID jedes Bildes da Sie diese Bilder im nächsten Schritt löschen werden.
2. Führen Sie den folgenden Befehl aus, um (rm
) Docker-Images nach den von Ihnen angegebenen Image-IDs. Ersetzen Sie imageID1
und imageID2
mit den Bild-IDs, die Sie sich in Schritt 1 notiert haben.
docker image rm imageID1 imageID2
3. Führen Sie nun den docker load
aus Befehl unten, um ein Bild aus einer .tar-Datei zu laden Archiv (arm_image.tar
).
docker load < arm_image.tar
4. Führen Sie die docker images
erneut aus Befehl, wie Sie es in Schritt eins getan haben, um alle verfügbaren Images auf Ihrem Computer aufzulisten. docker images
docker images
Unten sehen Sie das neu geladene Bild.
5. Führen Sie schließlich den folgenden Befehl aus, um ihn auszuführen und zu testen, ob das Bild funktioniert.
docker run arithmetic
Beachten Sie, dass der Befehl einen Wert von 10 zurückgegeben hat, was darauf hinweist, dass das geladene Bild funktioniert.
Schlussfolgerung
In diesem Lernprogramm haben Sie gelernt, wie Sie Container exportieren und importieren sowie Bilder laden und speichern. Sie sollten jetzt über grundlegende Kenntnisse zum Konvertieren Ihrer Docker-Speicherimages und -Container in eine gemeinsam nutzbare Form, z. B. eine TAR-Datei, verfügen.
Irgendwann müssen Sie Ihr Docker-Image oder Ihren Container freigeben. Wie wollen Sie nun dieses neu gewonnene Wissen in die Arbeit mit Docker-Containern und -Images integrieren, vielleicht in ein Backup-System?