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.