Einführung
In diesem Lab lernen Sie, wie Sie den Befehl docker image import verwenden, um Docker-Images aus verschiedenen Quellen zu erstellen. Sie werden untersuchen, wie Sie Images direkt von einer Remote-URL importieren, von einem lokalen Tarball über Standard-Eingabe importieren, von einem lokalen Tarball mit einer Commit-Nachricht importieren und von einem lokalen Verzeichnis mit neuen Konfigurationen importieren.
Durch praktische Übungen erhalten Sie hands-on Erfahrung in der Verwendung der verschiedenen Optionen des Befehls docker image import und lernen, wie Sie die importierten Images überprüfen können. Dieses Lab vermittelt Ihnen die Fähigkeiten, effizient Docker-Images aus bestehenden Tarballs oder Verzeichnissen zu erstellen und so Flexibilität in Ihrem Docker-Workflow zu gewährleisten.
Importieren eines Images von einer Remote-URL
In diesem Schritt lernen Sie, wie Sie ein Docker-Image direkt von einer Remote-URL importieren. Dies ist nützlich, wenn Sie ein Image-Tarball auf einem Webserver hosten und es in Ihre Docker-Umgebung laden möchten, ohne es manuell herunterzuladen.
Zuerst verwenden wir den curl-Befehl, um ein Beispiel-Image-Tarball von einer Remote-URL herunterzuladen. Wir verwenden zu Demonstrationszwecken ein öffentlich verfügbares Image-Tarball.
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Dieser Befehl lädt das Image-Tarball von der angegebenen URL herunter und speichert es als alpine.tar in Ihrem ~/project-Verzeichnis. Das Flag -o gibt den Namen und Speicherort der Ausgabedatei an.
Als nächstes verwenden wir den Befehl docker image import, um dieses Tarball in Ihre Docker-Umgebung zu importieren. Der import-Befehl kann eine URL oder einen Dateipfad als Eingabe verwenden. Bei Verwendung einer URL lädt Docker den Inhalt direkt herunter und importiert ihn.
docker image import https://labex.io/images/alpine.tar
Dieser Befehl importiert das Image von der Remote-URL. Docker lädt das Tarball herunter und erstellt ein neues Image aus dessen Inhalt. Standardmäßig hat das importierte Image kein Repository oder Tag.
Um zu überprüfen, ob das Image importiert wurde, können Sie die verfügbaren Images mit dem Befehl docker images auflisten.
docker images
Sie sollten ein Image mit <none> für sowohl REPOSITORY als auch TAG und einer aktuellen CREATED-Zeit sehen. Dies ist das soeben importierte Image.
Sie können das Image auch importieren und ihm während des Importvorgangs ein Repository und Tag zuweisen. Dies geschieht durch Hinzufügen des gewünschten Repositorys und Tags nach der URL.
docker image import https://labex.io/images/alpine.tar alpine:latest
Dieser Befehl importiert dasselbe Image, markiert es jedoch als alpine:latest.
Listen Sie nun erneut die Images auf, um das neu markierte Image zu sehen.
docker images
Sie sollten nun ein Image mit dem Repository alpine und dem Tag latest sehen.
Importieren eines Images aus einem lokalen Tarball über STDIN
Im vorherigen Schritt haben Sie gelernt, wie man ein Docker-Image von einer Remote-URL importiert. In diesem Schritt lernen Sie, wie Sie ein Docker-Image von einer lokalen Tarball-Datei über Standard-Eingabe (STDIN) importieren. Diese Methode ist nützlich, wenn Sie ein lokales Image-Tarball haben und dessen Inhalt direkt an den docker image import-Befehl weiterleiten möchten.
Stellen Sie zunächst sicher, dass die Datei alpine.tar in Ihrem ~/project-Verzeichnis aus dem vorherigen Schritt vorhanden ist. Falls nicht, können Sie sie erneut mit curl herunterladen:
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Nun verwenden wir den cat-Befehl, um den Inhalt der alpine.tar-Datei zu lesen und an den docker image import-Befehl weiterzuleiten. Das Argument - für docker image import weist den Befehl an, von STDIN zu lesen.
cat ~/project/alpine.tar | docker image import -
Dieser Befehl liest die alpine.tar-Datei und sendet deren Inhalt als Eingabe an den docker image import-Befehl. Docker importiert dann das Image aus den empfangenen Daten. Ähnlich wie beim Importieren von einer URL ohne Angabe eines Tags hat das importierte Image standardmäßig kein Repository oder Tag.
Um zu überprüfen, ob das Image importiert wurde, listen Sie die verfügbaren Images auf:
docker images
Sie sollten ein weiteres Image mit <none> für REPOSITORY und TAG sehen.
Sie können auch ein Repository und Tag angeben, wenn Sie von STDIN importieren. Die Syntax ähnelt dem Importieren von einer URL.
cat ~/project/alpine.tar | docker image import - alpine:stdin
Dieser Befehl importiert das Image von STDIN und markiert es als alpine:stdin.
Listen Sie die Images erneut auf, um den neuen Tag zu bestätigen:
docker images
Sie sollten nun ein Image mit dem Repository alpine und dem Tag stdin sehen.
Die Verwendung von STDIN ist eine flexible Methode zum Importieren von Images, insbesondere wenn Sie Befehle verketten oder mit komprimierten Tarballs arbeiten, die Sie möglicherweise in einem Schritt dekomprimieren und importieren.
Importieren eines Images aus einem lokalen Tarball mit Commit-Nachricht
In den vorherigen Schritten haben Sie Images von einer URL und über STDIN importiert. In diesem Schritt lernen Sie, wie Sie ein Image von einer lokalen Tarball-Datei importieren und während des Importvorgangs eine Commit-Nachricht hinzufügen. Das Hinzufügen einer Commit-Nachricht kann Ihnen helfen, die Herkunft oder den Zweck des importierten Images zu dokumentieren.
Stellen Sie zunächst sicher, dass die Datei alpine.tar in Ihrem ~/project-Verzeichnis vorhanden ist. Falls nicht, laden Sie sie herunter:
curl -o ~/project/alpine.tar https://labex.io/images/alpine.tar
Nun verwenden wir den docker image import-Befehl mit dem -m-Flag, um eine Commit-Nachricht hinzuzufügen. Wir geben außerdem den lokalen Dateipfad als Quelle an.
docker image import -m "Imported alpine base image" ~/project/alpine.tar alpine:commit
In diesem Befehl:
-m "Imported alpine base image"fügt die angegebene Commit-Nachricht zum Image-Verlauf hinzu.~/project/alpine.tarist der Pfad zur lokalen Tarball-Datei.alpine:commitist das gewünschte Repository und Tag für das importierte Image.
Nach Ausführung dieses Befehls importiert Docker das Image von der lokalen Tarball-Datei und wendet die Commit-Nachricht an.
Um den Import und die Commit-Nachricht zu überprüfen, können Sie das Image mit dem docker image history-Befehl untersuchen.
docker image history alpine:commit
Dieser Befehl zeigt den Verlauf des alpine:commit-Images an. Sie sollten einen Eintrag mit der Commit-Nachricht "Imported alpine base image" in der Spalte COMMENT sehen.
Sie können auch die Images auflisten, um das neue Tag zu bestätigen:
docker images
Sie sollten ein Image mit dem Repository alpine und dem Tag commit sehen.
Das Hinzufügen von Commit-Nachrichten ist eine gute Praxis, um Änderungen und die Herkunft Ihrer Docker-Images nachzuverfolgen, insbesondere beim Import aus externen Quellen.
Importieren eines Images aus einem lokalen Verzeichnis mit neuen Konfigurationen
In den vorherigen Schritten haben Sie Images aus Tarball-Dateien importiert. In diesem Schritt lernen Sie, wie Sie ein Image aus einem lokalen Verzeichnis importieren und während des Importvorgangs neue Konfigurationen anwenden. Dies ist nützlich, wenn Sie ein Dateisystem-Snapshot in einem Verzeichnis haben und es mit spezifischen Einstellungen wie dem auszuführenden Befehl in ein Docker-Image umwandeln möchten.
Erstellen wir zunächst eine einfache Verzeichnisstruktur und eine Datei, die in unser Image aufgenommen werden soll.
mkdir ~/project/myimage
echo "Hello, Docker!" > ~/project/myimage/hello.txt
Dies erstellt ein Verzeichnis namens myimage in Ihrem ~/project-Verzeichnis und eine Datei namens hello.txt darin mit dem Text "Hello, Docker!".
Nun verwenden wir den docker image import-Befehl, um den Inhalt des ~/project/myimage-Verzeichnisses zu importieren. Wir verwenden außerdem das -c-Flag, um Konfigurationsänderungen für das Image anzugeben. In diesem Fall setzen wir die CMD-Anweisung, die den Standardbefehl definiert, der ausgeführt wird, wenn ein Container aus diesem Image gestartet wird.
docker image import -c 'CMD ["/bin/cat", "/hello.txt"]' ~/project/myimage myimage:latest
In diesem Befehl:
-c 'CMD ["/bin/cat", "/hello.txt"]'setzt den Standardbefehl für das Image auf/bin/cat /hello.txt. Das-c-Flag ermöglicht die Anwendung von Dockerfile-Anweisungen wieCMD,ENTRYPOINT,ENV,EXPOSE,LABEL,ONBUILD,STOPSIGNAL,USERundWORKDIR.~/project/myimageist der Pfad zum lokalen Verzeichnis mit dem Dateisysteminhalt.myimage:latestist das gewünschte Repository und Tag für das importierte Image.
Nach Ausführung dieses Befehls erstellt Docker ein neues Image basierend auf dem Inhalt des ~/project/myimage-Verzeichnisses und wendet die angegebene CMD-Konfiguration an.
Um den Import und die Konfiguration zu überprüfen, können Sie die Images auflisten:
docker images
Sie sollten ein Image mit dem Repository myimage und dem Tag latest sehen.
Lassen Sie uns nun einen Container aus diesem Image starten, um zu prüfen, ob die CMD-Anweisung korrekt angewendet wurde.
docker run myimage:latest
Dieser Befehl startet einen Container aus dem myimage:latest-Image. Da wir CMD auf /bin/cat /hello.txt gesetzt haben, sollte der Container diesen Befehl ausführen und den Inhalt der hello.txt-Datei ausgeben, also "Hello, Docker!".
Sie sollten "Hello, Docker!" in Ihrem Terminal sehen. Dies bestätigt, dass der Verzeichnisinhalt importiert und die CMD-Konfiguration erfolgreich angewendet wurde.
Zusammenfassung
In diesem Lab haben wir gelernt, wie der Befehl docker image import verwendet wird, um Docker-Images aus verschiedenen Quellen zu erstellen. Wir begannen mit dem direkten Import eines Images von einer Remote-URL, wobei wir demonstrierten, wie ein online gehostetes Image-Tarball ohne manuellen Download geladen werden kann. Dabei wurde curl verwendet, um ein Beispiel-Tarball herunterzuladen, und anschließend der docker image import-Befehl mit der URL als Eingabe, um sowohl mit als auch ohne Angabe eines Repositorys und Tags zu importieren.
Die folgenden Schritte, die im bereitgestellten Inhalt nicht vollständig detailliert sind, würden wahrscheinlich das Importieren von Images aus lokalen Tarball-Dateien über STDIN, das Importieren mit einer Commit-Nachricht zur besseren Nachverfolgung sowie das Importieren aus einem lokalen Verzeichnis unter Anwendung neuer Konfigurationen abdecken. Diese Schritte würden weiterhin die Flexibilität und verschiedenen Anwendungsfälle des docker image import-Befehls zur Erstellung und Verwaltung von Docker-Images veranschaulichen.



