Comment utiliser la commande docker image load pour charger 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 lab, vous apprendrez à utiliser la commande docker load pour charger des images Docker à partir d'archives. Il s'agit d'une compétence essentielle pour transférer des images entre machines sans dépendre d'un registre Docker. Vous commencerez par préparer une archive d'image Docker en utilisant docker save.

Après cette préparation, vous explorerez différentes méthodes de chargement de l'image. Cela inclut le chargement d'une image depuis l'entrée standard (STDIN), le chargement depuis un fichier en utilisant le flag --input, et spécifiquement le chargement d'une variante de plateforme avec le flag --platform. En suivant ces étapes, vous acquerrez une expérience pratique dans la gestion d'images Docker hors ligne.


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{{"Comment utiliser la commande docker image load pour charger des images"}} docker/rmi -.-> lab-555156{{"Comment utiliser la commande docker image load pour charger des images"}} docker/images -.-> lab-555156{{"Comment utiliser la commande docker image load pour charger des images"}} docker/save -.-> lab-555156{{"Comment utiliser la commande docker image load pour charger des images"}} docker/load -.-> lab-555156{{"Comment utiliser la commande docker image load pour charger des images"}} end

Préparer une archive d'image Docker

Dans cette étape, nous allons apprendre à préparer une archive d'image Docker. Cela est utile pour transférer des images Docker entre différentes machines sans dépendre d'un registre Docker. Nous utiliserons la commande docker save pour créer une archive d'une image Docker existante.

Tout d'abord, téléchargeons une image Docker simple que nous utiliserons pour cette démonstration. Nous utiliserons l'image hello-world.

docker pull hello-world

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement et qu'il s'agit d'une image très légère.

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, nous pouvons la sauvegarder dans un fichier d'archive tar. Nous la sauvegarderons dans un fichier nommé hello-world.tar dans le répertoire ~/project.

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

Le flag -o spécifie le chemin du fichier de sortie. La commande sauvegardera l'image hello-world dans le fichier spécifié. Vous ne devriez voir aucune sortie si la commande réussit.

Pour vérifier que le fichier d'archive a bien été créé, vous pouvez lister les fichiers dans le répertoire ~/project.

ls ~/project

Vous devriez voir hello-world.tar dans la liste des fichiers.

hello-world.tar

Ce fichier hello-world.tar contient désormais les données de l'image Docker hello-world. Vous pouvez transférer ce fichier vers une autre machine et charger l'image à partir de celui-ci en utilisant la commande docker load, que nous aborderons dans les prochaines étapes.

Charger une image Docker depuis STDIN

Dans cette étape, nous allons apprendre à charger une image Docker depuis l'entrée standard (STDIN). Il s'agit d'une autre méthode pour charger une archive d'image, particulièrement utile lorsque l'on redirige la sortie de docker save directement vers docker load.

Tout d'abord, supprimons l'image hello-world que nous avons téléchargée et sauvegardée lors de l'étape précédente. Cela garantit que nous chargeons bien l'image depuis l'archive et non depuis une version existante.

docker rmi hello-world

Vous devriez voir une sortie indiquant que l'image a été supprimée.

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

Maintenant, nous allons utiliser la commande cat pour envoyer le contenu du fichier hello-world.tar vers la sortie standard, puis rediriger cette sortie vers la commande docker load.

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

La commande docker load, lorsqu'elle est utilisée sans le flag --input, lit l'archive d'image depuis STDIN. Vous devriez voir une sortie indiquant que les couches de l'image sont en cours de chargement.

...
Loaded image: hello-world:latest

Pour vérifier que l'image a bien été chargée, vous pouvez lister les images Docker disponibles.

docker images

Vous devriez voir l'image hello-world dans la sortie.

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

Cette démonstration montre comment charger une image Docker depuis un fichier d'archive redirigé vers STDIN.

Charger une image Docker depuis un fichier avec --input

Dans cette étape, nous allons apprendre à charger une image Docker depuis un fichier en utilisant le flag --input avec la commande docker load. Il s'agit de la méthode la plus courante pour charger une archive d'image depuis un fichier.

Commençons par supprimer à nouveau l'image hello-world pour nous assurer que nous la chargeons bien depuis le fichier d'archive.

docker rmi hello-world

Vous devriez voir une sortie confirmant la suppression de l'image.

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

Nous allons maintenant utiliser la commande docker load avec le flag --input pour spécifier le chemin vers le fichier hello-world.tar créé lors de la première étape.

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

Le flag --input indique à docker load de lire l'archive d'image depuis le fichier spécifié plutôt que depuis STDIN. Vous devriez voir une sortie similaire à celle obtenue lors du chargement depuis STDIN, indiquant que les couches sont en cours de chargement.

...
Loaded image: hello-world:latest

Pour confirmer que l'image a bien été chargée, listez à nouveau les images Docker.

docker images

L'image hello-world devrait apparaître dans la liste.

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

Cette méthode est généralement préférée lorsque vous avez l'archive d'image enregistrée sous forme de fichier, car elle est plus explicite que la redirection du contenu du fichier vers STDIN.

Charger une variante spécifique de plateforme avec --platform

Dans cette étape, nous allons explorer comment charger une variante spécifique de plateforme d'une image Docker depuis une archive en utilisant le flag --platform. Ceci est particulièrement utile lorsqu'une archive d'image contient des variantes pour plusieurs architectures (par exemple linux/amd64, linux/arm64).

Commençons par supprimer à nouveau l'image hello-world pour repartir à zéro.

docker rmi hello-world

Vous devriez voir une sortie confirmant la suppression de l'image.

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

Nous allons maintenant utiliser la commande docker load avec le flag --input pour spécifier le fichier d'archive et le flag --platform pour indiquer la plateforme souhaitée. Pour cet exemple, nous spécifierons linux/amd64, qui correspond à l'architecture de la VM LabEx.

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

Le flag --platform garantit que Docker ne charge que la variante d'image correspondant à l'architecture et au système d'exploitation spécifiés. Bien que l'image hello-world soit très simple et ne présente probablement pas de variations significatives entre plateformes dans son archive, cela démontre l'utilisation du flag. Vous devriez voir une sortie indiquant que les couches sont en cours de chargement.

...
Loaded image: hello-world:latest

Pour confirmer que l'image a bien été chargée, listez les images Docker.

docker images

L'image hello-world devrait apparaître dans la liste.

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

L'utilisation du flag --platform est importante lorsque vous travaillez avec des archives d'images multi-architectures pour vous assurer de charger la variante correcte pour votre environnement.

Résumé

Dans ce lab, nous avons appris à préparer une archive d'image Docker en utilisant la commande docker save, ce qui est essentiel pour transférer des images sans passer par un registre. Nous avons sauvegardé avec succès l'image hello-world dans un fichier tar.

Nous avons ensuite exploré différentes méthodes pour charger des images Docker depuis des archives en utilisant la commande docker load. Nous avons appris à charger une image depuis l'entrée standard (STDIN), ce qui est utile pour les opérations de piping, ainsi qu'à charger une image directement depuis un fichier en utilisant le flag --input. Enfin, nous avons découvert comment charger une variante spécifique de plateforme depuis une archive en utilisant le flag --platform, démontrant ainsi la flexibilité de la commande docker load pour gérer des images multi-plateformes.