Verwendung des docker image import Befehls zur Image-Erstellung

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/load("Load Image") subgraph Lab Skills docker/run -.-> lab-555154{{"Verwendung des docker image import Befehls zur Image-Erstellung"}} docker/ls -.-> lab-555154{{"Verwendung des docker image import Befehls zur Image-Erstellung"}} docker/images -.-> lab-555154{{"Verwendung des docker image import Befehls zur Image-Erstellung"}} docker/load -.-> lab-555154{{"Verwendung des docker image import Befehls zur Image-Erstellung"}} end

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 von 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 von 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.tar ist der Pfad zur lokalen Tarball-Datei.
  • alpine:commit ist 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 wie CMD, ENTRYPOINT, ENV, EXPOSE, LABEL, ONBUILD, STOPSIGNAL, USER und WORKDIR.
  • ~/project/myimage ist der Pfad zum lokalen Verzeichnis mit dem Dateisysteminhalt.
  • myimage:latest ist 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.