Wie man den docker image save-Befehl verwendet, um Images zu exportieren

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 save verwenden, um Docker-Images in Tar-Archivdateien zu exportieren. Dies ist eine entscheidende Fähigkeit zum Sichern von Images, zum Übertragen zwischen Systemen ohne Registry oder zum Bündeln mehrerer Images für die Verteilung.

Sie werden das Speichern eines einzelnen Images, das Speichern mehrerer Images in einem Archiv, das Speichern einer bestimmten Plattformvariante eines Images und das Komprimieren des gespeicherten Image-Archivs mit gzip untersuchen. Am Ende dieses Labs können Sie den Befehl docker save für verschiedene Image-Verwaltungstasks beherrschen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/save("Save Image") subgraph Lab Skills docker/pull -.-> lab-555162{{"Wie man den docker image save-Befehl verwendet, um Images zu exportieren"}} docker/images -.-> lab-555162{{"Wie man den docker image save-Befehl verwendet, um Images zu exportieren"}} docker/save -.-> lab-555162{{"Wie man den docker image save-Befehl verwendet, um Images zu exportieren"}} end

Ein einzelnes Image in ein Tar-Archiv speichern

In diesem Schritt lernen Sie, wie Sie ein einzelnes Docker-Image in eine Tar-Archivdatei speichern. Dies ist nützlich, um Images zu sichern oder sie auf ein anderes System zu übertragen, ohne eine direkte Verbindung zu einer Docker-Registry herzustellen.

Zunächst laden wir ein einfaches Docker-Image herunter, das wir für dieses Beispiel verwenden werden. Wir verwenden das hello-world-Image, das klein und für diese Demonstration geeignet ist.

docker pull hello-world

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird.

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

Jetzt, da wir das hello-world-Image lokal haben, können wir es mit dem Befehl docker save in ein Tar-Archiv speichern. Die grundlegende Syntax lautet docker save -o <output_file.tar> <image_name>.

Wir speichern das hello-world-Image in einer Datei namens hello-world.tar im aktuellen Verzeichnis (~/project).

docker save -o hello-world.tar hello-world

Nachdem Sie diesen Befehl ausgeführt haben, wird im Verzeichnis ~/project eine Datei namens hello-world.tar erstellt. Diese Datei enthält das hello-world Docker-Image.

Sie können überprüfen, ob die Datei erstellt wurde, und ihre Größe mit dem Befehl ls -lh überprüfen.

ls -lh hello-world.tar

Sie sollten eine Ausgabe ähnlich dieser sehen, die die Dateigröße anzeigt:

-rw-r--r-- 1 labex labex ... hello-world.tar

Diese Tar-Datei kann jetzt auf einen anderen Computer übertragen und mit dem Befehl docker load geladen werden.

Mehrere Images in ein Tar-Archiv speichern

Im vorherigen Schritt haben Sie gelernt, wie Sie ein einzelnes Docker-Image speichern. In diesem Schritt lernen Sie, wie Sie mehrere Docker-Images in eine einzige Tar-Archivdatei speichern. Dies ist praktisch, wenn Sie mehrere Images zusammen für die Verteilung oder Sicherung bündeln müssen.

Zunächst laden wir ein weiteres Docker-Image herunter, um mehr als ein Image zum Speichern zu haben. Wir laden das alpine-Image herunter, das eine leichte Linux-Distribution ist.

docker pull alpine

Sie sollten eine Ausgabe sehen, die anzeigt, dass das alpine-Image heruntergeladen wird.

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

Jetzt haben Sie sowohl das hello-world- als auch das alpine-Image lokal. Sie können dies überprüfen, indem Sie Ihre lokalen Images auflisten:

docker images

Die Ausgabe sollte sowohl hello-world als auch alpine in der Liste anzeigen.

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

Um mehrere Images in ein einzelnes Tar-Archiv zu speichern, listen Sie einfach die Image-Namen nach dem Ausgabedateinamen im docker save-Befehl auf. Die Syntax lautet docker save -o <output_file.tar> <image1_name> <image2_name> ....

Wir speichern sowohl das hello-world- als auch das alpine-Image in eine Datei namens images.tar im Verzeichnis ~/project.

docker save -o images.tar hello-world alpine

Nachdem Sie diesen Befehl ausgeführt haben, wird im Verzeichnis ~/project eine Datei namens images.tar erstellt. Diese Datei enthält sowohl das hello-world- als auch das alpine-Docker-Image.

Sie können überprüfen, ob die Datei erstellt wurde, und ihre Größe mit dem Befehl ls -lh überprüfen. Die Größe wird größer sein als die der hello-world.tar-Datei aus dem vorherigen Schritt, da sie zwei Images enthält.

ls -lh images.tar

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 labex labex ... images.tar

Um zu bestätigen, dass beide Images im Archiv enthalten sind, können Sie den Inhalt der Tar-Datei mit dem Befehl tar -tf auflisten.

tar -tf images.tar

Die Ausgabe sollte Dateien anzeigen, die sich auf beide Images beziehen, einschließlich ihrer Manifeste und Layer-Daten. Sie sollten Einträge wie hello-world/ und alpine/ sehen.

...
hello-world/
hello-world/manifest.json
...
alpine/
alpine/manifest.json
...

Diese einzelne Tar-Datei kann jetzt verwendet werden, um beide Images auf ein anderes System mit docker load zu laden.

Ein spezifisches Plattform-Variant eines Images speichern

In diesem Schritt lernen Sie, wie Sie ein spezifisches Plattform-Variant eines Docker-Images speichern. Docker-Images können für verschiedene Architekturen (wie amd64, arm64 usw.) erstellt werden. Manchmal müssen Sie möglicherweise ein Image speichern, das speziell für eine bestimmte Plattform erstellt wurde.

Standardmäßig arbeiten docker pull und docker save mit dem Image-Variant, der der Architektur Ihres aktuellen Systems entspricht. Sie können jedoch eine andere Plattform mit der Option --platform angeben.

Lassen Sie uns ein Image herunterladen, das Varianten für verschiedene Plattformen hat. Das alpine-Image ist ein gutes Beispiel. Wir werden explizit die arm64-Variante des alpine-Images herunterladen, auch wenn Ihre LabEx-VM wahrscheinlich amd64 ist.

docker pull --platform arm64 alpine

Sie sollten eine Ausgabe sehen, die anzeigt, dass die arm64-Variante des alpine-Images heruntergeladen wird.

arm64: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Jetzt speichern wir diese spezifische arm64-Variante des alpine-Images in ein Tar-Archiv. Wir verwenden erneut die Option --platform mit dem Befehl docker save.

Wir speichern die arm64-Variante von alpine in eine Datei namens alpine_arm64.tar im Verzeichnis ~/project.

docker save --platform arm64 -o alpine_arm64.tar alpine

Nachdem Sie diesen Befehl ausgeführt haben, wird im Verzeichnis ~/project eine Datei namens alpine_arm64.tar erstellt. Diese Datei enthält die arm64-Variante des alpine Docker-Images.

Sie können überprüfen, ob die Datei erstellt wurde, indem Sie den Befehl ls -lh verwenden.

ls -lh alpine_arm64.tar

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 labex labex ... alpine_arm64.tar

Um zu bestätigen, dass das gespeicherte Image tatsächlich die arm64-Variante ist, können Sie den Inhalt der Tar-Datei untersuchen. Obwohl die direkte Überprüfung der Architektur aus dem Tar-Inhalt komplex ist, stellt die Tatsache, dass Sie --platform arm64 während des Speichervorgangs verwendet haben, sicher, dass das gespeicherte Image für diese Plattform ist.

Dies zeigt, wie Sie explizit ein Image für eine Plattform speichern können, die von der Architektur Ihres Hosts abweicht.

Ein Image speichern und mit gzip komprimieren

In diesem letzten Schritt lernen Sie, wie Sie ein Docker-Image in ein Tar-Archiv speichern und es gleichzeitig mit gzip komprimieren. Dies ist eine gängige Praxis, um die Dateigröße des gespeicherten Images zu reduzieren und so die Speicherung und Übertragung zu vereinfachen.

Der docker save-Befehl hat selbst keine integrierte Kompressionsoption. Sie können jedoch die Kompression erreichen, indem Sie die Ausgabe von docker save an ein Kompressionsprogramm wie gzip weiterleiten.

Wir werden das alpine-Image (das Sie in einem vorherigen Schritt heruntergeladen haben sollten) speichern und es mit gzip komprimieren. Die Ausgabe wird in eine Datei mit der Endung .tar.gz umgeleitet.

Die Syntax beinhaltet die Weiterleitung der Ausgabe: docker save <image_name> | gzip > <output_file.tar.gz>.

Lassen Sie uns das alpine-Image in eine mit gzip komprimierte Tar-Datei namens alpine.tar.gz im Verzeichnis ~/project speichern.

docker save alpine | gzip > alpine.tar.gz

Dieser Befehl speichert das alpine-Image auf die Standardausgabe, leitet diese Ausgabe an den gzip-Befehl zur Kompression weiter und leitet dann die komprimierte Ausgabe in die Datei alpine.tar.gz um.

Nachdem Sie diesen Befehl ausgeführt haben, wird im Verzeichnis ~/project eine Datei namens alpine.tar.gz erstellt.

Sie können überprüfen, ob die Datei erstellt wurde, und ihre Größe mit dem Befehl ls -lh überprüfen. Vergleichen Sie ihre Größe mit der Größe des unkomprimierten alpine-Images (das Teil von images.tar ist oder wäre, wenn Sie es einzeln gespeichert hätten), um die Wirkung der Kompression zu sehen.

ls -lh alpine.tar.gz

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 labex labex ... alpine.tar.gz

Um zu bestätigen, dass die Datei ein mit gzip komprimiertes Tar-Archiv ist, können Sie den file-Befehl verwenden.

file alpine.tar.gz

Die Ausgabe sollte anzeigen, dass es sich um eine mit gzip komprimierte Datendatei handelt.

alpine.tar.gz: gzip compressed data, ...

Sie können auch den Inhalt des komprimierten Archivs mit tar -tfz auflisten. Das z-Flag sagt tar, die Datei mit gzip zu dekomprimieren, bevor es den Inhalt auflistet.

tar -tfz alpine.tar.gz

Sie sollten den Inhalt des alpine-Images im Archiv sehen, ähnlich wie als Sie den Inhalt von images.tar aufgelistet haben.

...
alpine/
alpine/manifest.json
...

Diese Methode ist effizient, um Images in einem einzigen Befehl zu speichern und zu komprimieren.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den docker save-Befehl verwenden, um Docker-Images in Tar-Archive zu exportieren. Sie haben erfolgreich ein einzelnes Image (hello-world) in eine Tar-Datei gespeichert, was die grundlegende Verwendung des Befehls demonstriert.

Darüber hinaus haben Sie das Speichern mehrerer Images in einem einzigen Archiv untersucht, was für das Bündeln von Images nützlich ist. Sie haben auch gelernt, wie Sie ein spezifisches Plattform-Variant eines Images speichern und wie Sie die ausgegebene Tar-Datei mit gzip komprimieren, um die Größe zu reduzieren. Diese Schritte haben die grundlegenden Funktionen von docker save für die Sicherung und Übertragung von Images abgedeckt.