Verwendung des docker image load Befehls zum Laden von Images

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 load verwenden, um Docker-Images aus Archiven zu laden. Dies ist eine entscheidende Fähigkeit, um Images zwischen Maschinen zu übertragen, ohne auf eine Docker-Registry angewiesen zu sein. Sie beginnen damit, ein Docker-Image-Archiv mit dem Befehl docker save vorzubereiten.

Nach der Vorbereitung werden Sie verschiedene Methoden zum Laden des Images erkunden. Dazu gehört das Laden eines Images aus der Standardeingabe (STDIN), das Laden aus einer Datei mit dem Flag --input und das spezifische Laden einer Plattformvariante mit dem Flag --platform. Durch die Durchführung dieser Schritte erhalten Sie praktische Erfahrung im Offline-Management von Docker-Images.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/rmi("Remove Image") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/save("Save Image") docker/ImageOperationsGroup -.-> docker/load("Load Image") subgraph Lab Skills docker/pull -.-> lab-555156{{"Verwendung des docker image load Befehls zum Laden von Images"}} docker/rmi -.-> lab-555156{{"Verwendung des docker image load Befehls zum Laden von Images"}} docker/images -.-> lab-555156{{"Verwendung des docker image load Befehls zum Laden von Images"}} docker/save -.-> lab-555156{{"Verwendung des docker image load Befehls zum Laden von Images"}} docker/load -.-> lab-555156{{"Verwendung des docker image load Befehls zum Laden von Images"}} end

Ein Docker-Image-Archiv vorbereiten

In diesem Schritt lernen Sie, wie Sie ein Docker-Image-Archiv erstellen. Dies ist nützlich, um Docker-Images zwischen verschiedenen Maschinen zu übertragen, ohne auf eine Docker-Registry angewiesen zu sein. Wir verwenden den Befehl docker save, um ein Archiv eines vorhandenen Docker-Images zu erstellen.

Zuerst laden wir ein einfaches Docker-Image herunter, das wir für diese Demonstration verwenden können. Wir verwenden das hello-world-Image.

docker pull hello-world

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird und dass es sich um ein sehr kleines Image handelt.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Nachdem wir das hello-world-Image haben, können wir es in eine tar-Archivdatei speichern. Wir speichern es in einer Datei namens hello-world.tar im Verzeichnis ~/project.

docker save -o ~/project/hello-world.tar hello-world

Das Flag -o gibt den Pfad der Ausgabedatei an. Der Befehl speichert das hello-world-Image in der angegebenen Datei. Bei erfolgreicher Ausführung sollten Sie keine Ausgabe sehen.

Um zu überprüfen, ob die Archivdatei erstellt wurde, können Sie die Dateien im Verzeichnis ~/project auflisten.

ls ~/project

Sie sollten hello-world.tar in der Liste der Dateien sehen.

hello-world.tar

Die Datei hello-world.tar enthält nun die Docker-Image-Daten für das hello-world-Image. Sie können diese Datei auf eine andere Maschine übertragen und das Image daraus mit dem Befehl docker load laden, den wir in den nächsten Schritten behandeln werden.

Ein Docker-Image von STDIN laden

In diesem Schritt lernen Sie, wie Sie ein Docker-Image von der Standardeingabe (STDIN) laden können. Dies ist eine weitere Methode zum Laden eines Image-Archivs, die besonders nützlich ist, wenn Sie die Ausgabe von docker save direkt an docker load weiterleiten.

Zuerst entfernen wir das hello-world-Image, das wir im vorherigen Schritt heruntergeladen und gespeichert haben. Dadurch stellen wir sicher, dass wir das Image aus dem Archiv laden und nicht das vorhandene verwenden.

docker rmi hello-world

Sie sollten eine Ausgabe sehen, die bestätigt, dass das Image gelöscht wurde.

Untagged: hello-world:latest
Deleted: sha256:...

Nun verwenden wir den cat-Befehl, um den Inhalt der Datei hello-world.tar auf die Standardausgabe auszugeben, und leiten diese Ausgabe dann an den docker load-Befehl weiter.

cat ~/project/hello-world.tar | docker load

Der Befehl docker load liest das Image-Archiv von STDIN, wenn er ohne das --input-Flag verwendet wird. Sie sollten eine Ausgabe sehen, die anzeigt, dass die Image-Layer geladen werden.

...
Loaded image: hello-world:latest

Um zu überprüfen, ob das Image erfolgreich geladen wurde, können Sie die verfügbaren Docker-Images auflisten.

docker images

Sie sollten das hello-world-Image in der Ausgabe sehen.

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    ...            ...           ...

Dies demonstriert, wie Sie ein Docker-Image aus einer Archivdatei laden, die an STDIN weitergeleitet wird.

Ein Docker-Image aus einer Datei mit --input laden

In diesem Schritt lernen Sie, wie Sie ein Docker-Image aus einer Datei mit dem --input-Flag des docker load-Befehls laden können. Dies ist die gängigste Methode, um ein Image-Archiv aus einer Datei zu laden.

Zuerst entfernen wir erneut das hello-world-Image, um sicherzustellen, dass wir es aus der Archivdatei laden.

docker rmi hello-world

Sie sollten eine Ausgabe sehen, die die Löschung des Images bestätigt.

Untagged: hello-world:latest
Deleted: sha256:...

Nun verwenden wir den docker load-Befehl mit dem --input-Flag, um den Pfad zur hello-world.tar-Datei anzugeben, die wir im ersten Schritt erstellt haben.

docker load --input ~/project/hello-world.tar

Das --input-Flag weist docker load an, das Image-Archiv aus der angegebenen Datei statt von STDIN zu lesen. Sie sollten eine ähnliche Ausgabe wie beim Laden von STDIN sehen, die anzeigt, dass die Layer geladen werden.

...
Loaded image: hello-world:latest

Um zu bestätigen, dass das Image geladen wurde, listen Sie die Docker-Images erneut auf.

docker images

Das hello-world-Image sollte in der Liste vorhanden sein.

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    ...            ...           ...

Diese Methode wird generell bevorzugt, wenn Sie das Image-Archiv als Datei gespeichert haben, da sie expliziter ist als das Weiterleiten des Dateiinhalts an STDIN.

Spezifische Plattformvariante mit --platform laden

In diesem Schritt untersuchen wir, wie eine spezifische Plattformvariante eines Docker-Images aus einem Archiv mit dem --platform-Flag geladen werden kann. Dies ist besonders nützlich, wenn ein Image-Archiv Varianten für mehrere Architekturen enthält (z.B. linux/amd64, linux/arm64).

Zuerst entfernen wir das hello-world-Image erneut, um mit einem sauberen Zustand zu beginnen.

docker rmi hello-world

Sie sollten eine Ausgabe sehen, die die Löschung des Images bestätigt.

Untagged: hello-world:latest
Deleted: sha256:...

Nun verwenden wir den docker load-Befehl mit dem --input-Flag zur Angabe der Archivdatei und dem --platform-Flag zur Spezifikation der gewünschten Plattform. Für dieses Beispiel geben wir linux/amd64 an, die Architektur der LabEx VM.

docker load --input ~/project/hello-world.tar --platform linux/amd64

Das --platform-Flag stellt sicher, dass Docker nur die Image-Variante lädt, die der angegebenen Architektur und dem Betriebssystem entspricht. Obwohl das hello-world-Image sehr einfach ist und wahrscheinlich keine signifikanten Plattformunterschiede im Archiv aufweist, demonstriert dies die Verwendung des Flags. Sie sollten eine Ausgabe sehen, die anzeigt, dass die Layer geladen werden.

...
Loaded image: hello-world:latest

Um zu bestätigen, dass das Image geladen wurde, listen Sie die Docker-Images auf.

docker images

Das hello-world-Image sollte in der Liste vorhanden sein.

REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    ...            ...           ...

Die Verwendung des --platform-Flags ist wichtig bei der Arbeit mit Multi-Architektur-Image-Archiven, um sicherzustellen, dass Sie die korrekte Variante für Ihre Umgebung laden.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ein Docker-Image-Archiv mit dem docker save-Befehl vorbereitet, was essenziell für den Transfer von Images ohne Registry ist. Wir haben erfolgreich das hello-world-Image in eine tar-Datei gespeichert.

Anschließend haben wir verschiedene Methoden zum Laden von Docker-Images aus Archiven mit dem docker load-Befehl untersucht. Wir haben gelernt, wie man ein Image über Standard-Eingabe (STDIN) lädt, was für Pipe-Operationen nützlich ist, und wie man ein Image direkt aus einer Datei mit dem --input-Flag lädt. Abschließend haben wir entdeckt, wie man eine spezifische Plattformvariante eines Images aus einem Archiv mit dem --platform-Flag lädt, was die Flexibilität des docker load-Befehls für die Verwaltung von Multi-Plattform-Images demonstriert.