Comment utiliser la commande de sauvegarde d'image Docker pour exporter des images

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à utiliser la commande docker save pour exporter des images Docker dans des fichiers d'archives tar. Cette compétence est essentielle pour sauvegarder des images, les transférer entre des systèmes sans registre ou regrouper plusieurs images pour la distribution.

Vous allez explorer la sauvegarde d'une seule image, la sauvegarde de plusieurs images dans une seule archive, la sauvegarde d'une variante de plateforme spécifique d'une image et la compression de l'archive d'image sauvegardée à l'aide de gzip. À la fin de ce laboratoire, vous maîtriserez l'utilisation de docker save pour diverses tâches de gestion d'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/images("List Images") docker/ImageOperationsGroup -.-> docker/save("Save Image") subgraph Lab Skills docker/pull -.-> lab-555162{{"Comment utiliser la commande de sauvegarde d'image Docker pour exporter des images"}} docker/images -.-> lab-555162{{"Comment utiliser la commande de sauvegarde d'image Docker pour exporter des images"}} docker/save -.-> lab-555162{{"Comment utiliser la commande de sauvegarde d'image Docker pour exporter des images"}} end

Sauvegarder une seule image dans une archive tar

Dans cette étape, vous apprendrez à sauvegarder une seule image Docker dans un fichier d'archive tar. Cela est utile pour sauvegarder des images ou les transférer sur un autre système sans connexion directe à un registre Docker.

Tout d'abord, téléchargeons une simple image Docker que nous utiliserons pour cet exemple. Nous utiliserons l'image hello-world, qui est petite et adaptée à cette démonstration.

docker pull hello-world

Vous devriez voir un affichage indiquant que l'image est en cours de téléchargement.

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

Maintenant que nous avons l'image hello-world localement, nous pouvons la sauvegarder dans une archive tar en utilisant la commande docker save. La syntaxe de base est docker save -o <output_file.tar> <image_name>.

Nous allons sauvegarder l'image hello-world dans un fichier nommé hello-world.tar dans votre répertoire actuel (~/project).

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

Après avoir exécuté cette commande, un fichier nommé hello-world.tar sera créé dans votre répertoire ~/project. Ce fichier contient l'image Docker hello-world.

Vous pouvez vérifier que le fichier a été créé et vérifier sa taille en utilisant la commande ls -lh.

ls -lh hello-world.tar

Vous devriez voir un affichage similaire à celui-ci, montrant la taille du fichier :

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

Ce fichier tar peut maintenant être transféré sur une autre machine et chargé en utilisant la commande docker load.

Sauvegarder plusieurs images dans une archive tar

Dans l'étape précédente, vous avez appris à sauvegarder une seule image Docker. Dans cette étape, vous apprendrez à sauvegarder plusieurs images Docker dans un seul fichier d'archive tar. Cela est pratique lorsque vous avez besoin de regrouper plusieurs images pour la distribution ou la sauvegarde.

Tout d'abord, téléchargeons une autre image Docker pour avoir plus d'une image à sauvegarder. Nous allons télécharger l'image alpine, qui est une distribution Linux légère.

docker pull alpine

Vous devriez voir un affichage indiquant que l'image alpine est en cours de téléchargement.

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

Maintenant, vous avez à la fois les images hello-world et alpine localement. Vous pouvez le vérifier en listant vos images locales :

docker images

La sortie devrait montrer à la fois hello-world et alpine dans la liste.

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

Pour sauvegarder plusieurs images dans une seule archive tar, vous n'avez qu'à lister les noms des images après le nom du fichier de sortie dans la commande docker save. La syntaxe est docker save -o <output_file.tar> <image1_name> <image2_name> ....

Nous allons sauvegarder les images hello-world et alpine dans un fichier nommé images.tar dans votre répertoire ~/project.

docker save -o images.tar hello-world alpine

Après avoir exécuté cette commande, un fichier nommé images.tar sera créé dans votre répertoire ~/project. Ce fichier contient les images Docker hello-world et alpine.

Vous pouvez vérifier que le fichier a été créé et vérifier sa taille en utilisant la commande ls -lh. La taille sera supérieure au fichier hello-world.tar de l'étape précédente car il contient deux images.

ls -lh images.tar

Vous devriez voir un affichage similaire à celui-ci :

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

Pour confirmer que les deux images sont incluses dans l'archive, vous pouvez lister le contenu du fichier tar en utilisant la commande tar -tf.

tar -tf images.tar

La sortie devrait montrer des fichiers liés aux deux images, y compris leurs manifestes et les données des couches. Vous devriez voir des entrées telles que hello-world/ et alpine/.

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

Ce seul fichier tar peut maintenant être utilisé pour charger les deux images sur un autre système en utilisant docker load.

Sauvegarder une variante de plateforme spécifique d'une image

Dans cette étape, vous apprendrez à sauvegarder une variante de plateforme spécifique d'une image Docker. Les images Docker peuvent être construites pour différentes architectures (comme amd64, arm64, etc.). Parfois, vous devrez peut-être sauvegarder une image spécifiquement construite pour une plateforme particulière.

Par défaut, docker pull et docker save opèrent sur la variante d'image qui correspond à l'architecture de votre système actuel. Cependant, vous pouvez spécifier une autre plateforme en utilisant le drapeau --platform.

Téléchargeons une image qui a des variantes pour différentes plateformes. L'image alpine est un bon exemple. Nous allons explicitement télécharger la variante arm64 de l'image alpine, même si votre machine virtuelle LabEx est probablement de type amd64.

docker pull --platform arm64 alpine

Vous devriez voir un affichage indiquant que la variante arm64 de l'image alpine est en cours de téléchargement.

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

Maintenant, sauvegardons cette variante arm64 spécifique de l'image alpine dans une archive tar. Nous allons à nouveau utiliser le drapeau --platform avec la commande docker save.

Nous allons sauvegarder la variante arm64 de alpine dans un fichier nommé alpine_arm64.tar dans votre répertoire ~/project.

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

Après avoir exécuté cette commande, un fichier nommé alpine_arm64.tar sera créé dans votre répertoire ~/project. Ce fichier contient la variante arm64 de l'image Docker alpine.

Vous pouvez vérifier que le fichier a été créé en utilisant la commande ls -lh.

ls -lh alpine_arm64.tar

Vous devriez voir un affichage similaire à celui-ci :

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

Pour confirmer que l'image sauvegardée est bien la variante arm64, vous pouvez inspecter le contenu du fichier tar. Bien que la vérification directe de l'architecture à partir du contenu du tar soit complexe, le fait que vous ayez utilisé --platform arm64 lors de l'opération de sauvegarde garantit que l'image sauvegardée est pour cette plateforme.

Cela démontre comment sauvegarder explicitement une image pour une plateforme différente de l'architecture de votre hôte.

Sauvegarder une image et la compresser avec gzip

Dans cette étape finale, vous apprendrez à sauvegarder une image Docker dans une archive tar et à la compresser simultanément avec gzip. C'est une pratique courante pour réduire la taille du fichier de l'image sauvegardée, ce qui facilite son stockage et son transfert.

La commande docker save n'a pas de drapeau de compression intégré. Cependant, vous pouvez obtenir la compression en redirigeant la sortie de docker save vers un utilitaire de compression comme gzip.

Nous allons sauvegarder l'image alpine (que vous devriez avoir téléchargée dans une étape précédente) et la compresser avec gzip. La sortie sera redirigée vers un fichier avec l'extension .tar.gz.

La syntaxe consiste à rediriger la sortie : docker save <image_name> | gzip > <output_file.tar.gz>.

Sauvegardons l'image alpine dans un fichier tar compressé avec gzip nommé alpine.tar.gz dans votre répertoire ~/project.

docker save alpine | gzip > alpine.tar.gz

Cette commande sauvegarde l'image alpine sur la sortie standard, redirige cette sortie vers la commande gzip pour la compression, puis redirige la sortie compressée vers le fichier alpine.tar.gz.

Après avoir exécuté cette commande, un fichier nommé alpine.tar.gz sera créé dans votre répertoire ~/project.

Vous pouvez vérifier que le fichier a été créé et vérifier sa taille en utilisant la commande ls -lh. Comparez sa taille à la taille de l'image alpine non compressée (qui fait partie de images.tar ou le serait si vous l'aviez sauvegardée individuellement) pour voir l'effet de la compression.

ls -lh alpine.tar.gz

Vous devriez voir un affichage similaire à celui-ci :

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

Pour confirmer que le fichier est une archive tar compressée avec gzip, vous pouvez utiliser la commande file.

file alpine.tar.gz

La sortie devrait indiquer qu'il s'agit d'un fichier de données compressé avec gzip.

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

Vous pouvez également lister le contenu de l'archive compressée en utilisant tar -tfz. Le drapeau z indique à tar de décompresser le fichier avec gzip avant de lister le contenu.

tar -tfz alpine.tar.gz

Vous devriez voir le contenu de l'image alpine dans l'archive, similaire à lorsque vous avez listé le contenu de images.tar.

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

Cette méthode est efficace pour sauvegarder et compresser des images en une seule commande.

Résumé

Dans ce laboratoire, vous avez appris à utiliser la commande docker save pour exporter des images Docker dans des archives tar. Vous avez réussi à sauvegarder une seule image (hello-world) dans un fichier tar, ce qui illustre l'utilisation de base de la commande.

En outre, vous avez exploré la sauvegarde de plusieurs images dans une seule archive, ce qui est utile pour regrouper des images. Vous avez également appris à sauvegarder une variante de plateforme spécifique d'une image et à compresser le fichier tar de sortie avec gzip pour réduire sa taille. Ces étapes ont couvert les fonctionnalités fondamentales de docker save pour la sauvegarde et le transfert d'images.