Si vous débutez avec Docker, vous n'avez peut-être pas encore découvert comment partager des conteneurs et des images avec d'autres développeurs ou machines. Mais est-il possible de partager des conteneurs ? Oui! Laisser le docker save
la commande image et l'docker export
la commande d'image fait l'affaire !
Dans ce didacticiel, vous apprendrez à enregistrer et à exporter des conteneurs et des images à partager en exécutant des commandes Docker.
Prêt? Commençons !
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants :
- Docker Desktop ou Engine installé en tant que version 20.10.7 est utilisé dans ce didacticiel.
- N'importe quel système d'exploitation compatible Docker, Ubuntu est utilisé dans ce didacticiel.
Création d'une application Docker de base
Avant de passer à l'exportation ou à l'enregistrement de conteneurs et d'images Docker, vous devez d'abord créer une application que vous utiliserez à des fins de partage. Vous allez créer une solution arithmétique de base en tant qu'exemple d'application Docker via un environnement de ligne de commande.
1. Créez un fichier pour votre projet nommé Dockerfile
, et collez le code ci-dessous dans le nouveau fichier Dockerfile
.
Le code ci-dessous effectue une opération arithmétique de base qui donne une valeur de 10.
# busybox provides Unix utilities in a single executable file,
# which enables you to do some arithmetic.
FROM busybox
# Performs a basic arithmetic operation that results in a value of 10.
CMD echo $(((20*5)/10))
2. Ensuite, ouvrez votre terminal et exécutez la docker build
commande ci-dessous pour construire l'application nommée (arithmetic
) dans le lieu de travail (.
).
docker build --tag arithmetic .
Si vous utilisez Linux, vous devrez peut-être ajouter la commande sudo au début pour éviter d'obtenir une erreur "autorisation refusée", comme ceci :
sudo docker build --tag arithmetic
. Ajout dusudo
commande élève la commande en tant qu'administrateur.
3. Exécutez la commande ci-dessous pour exécuter l'application Docker que vous avez construite (arithmetic
). L'exécution de l'application Docker crée également automatiquement un conteneur pour votre application.
docker run arithmetic
Exporter des conteneurs Docker
Maintenant que vous avez une application Docker de base, il est temps d'expliquer comment exporter un conteneur Docker. Construire une énorme application prend beaucoup de temps et peut être un frein si vous souhaitez simplement partager le conteneur avec votre équipe. Existe-t-il un moyen plus rapide de partager le conteneur ? Oui !
Au lieu de créer l'application directement à partir d'un Dockerfile, exportez le conteneur Docker.
1. Exécutez le docker
commande ci-dessous pour tout lister (ls --all
) containers
disponible sur votre machine. Notez l'CONTAINER ID
du conteneur que vous souhaitez partager, car vous en aurez besoin pour exporter le conteneur à l'étape suivante.
Notez que vous ne pouvez exporter que des conteneurs, pas des images.
docker container ls --all
2. Ensuite, exécutez la commande ci-dessous pour export
le conteneur Docker de votre choix (container-id
). Remplacez container-id
avec l'ID de conteneur que vous avez noté à la première étape.
Lors de l'export, vous enregistrez le système de fichiers du conteneur dans un .tar archive (arithmetic.tar
).
docker export container-id > arithmetic.tar
3. Enfin, vérifiez votre dossier de projet dans votre gestionnaire de fichiers, et vous verrez qu'un nouveau .tar l'archive a été créée (arithmetic.tar ). Puisque vous avez exporté le conteneur vers un .tar archive, vous pouvez maintenant la partager avec n'importe qui.
Importer des conteneurs Docker
Au lieu d'exporter, vous devrez peut-être importer un conteneur Docker qu'un coéquipier a partagé avec vous. Si c'est le cas, le docker import
commande est ce dont vous avez besoin. L'docker import
La commande prend le système de fichiers exporté et le convertit en un système de fichiers image que vous pouvez exécuter sur votre machine.
1. Exécutez le docker
suivant commande pour import
un conteneur (arithmetic.tar
) et convertissez-le en image. Lors de l'import, vous devez joindre une balise (latest
) et nommez l'image (put_any_name_here
), comme indiqué ci-dessous.
docker import arithmetic.tar put_any_name_here:latest
2. Ensuite, exécutez la commande ci-dessous pour répertorier toutes les images Docker existantes, afin de pouvoir vérifier si une nouvelle image existe.
docker images
Ci-dessous, vous pouvez voir qu'une nouvelle image Docker existe.
3. Maintenant, exécutez le docker run
commande ci-dessous pour ouvrir le shell (sh
) pour l'image importée. Le conteneur s'exécute de manière interactive et est attaché à votre terminal (-i
et -t
drapeaux).
docker run -i -t put_any_name_here:latest sh
Vous pouvez dire par l'invite ci-dessous (/ #), vous êtes maintenant dans le shell de l'image importée.
4. Enfin, exécutez la commande ci-dessous pour voir si l'image fonctionne comme prévu.
echo $(((20*5)/10))
Si l'image fonctionne, vous obtiendrez une sortie de 10 , comme indiqué ci-dessous.
Si vous essayez d'exécuter l'image directement, vous obtiendrez une erreur, comme indiqué ci-dessous, car l'image importée est une image du système de fichiers.
Enregistrement d'images via Docker Save Image
Vous souhaitez peut-être enregistrer une image Docker plutôt qu'un conteneur. Si c'est le cas, allez avec le docker save
commande d'image à la place. Contrairement à l'docker export
commande, la docker save
La commande permet d'enregistrer directement une ou plusieurs images dans une archive tar et de la partager avec n'importe qui.
Notez que vous ne pouvez enregistrer et charger que des images Docker, pas des conteneurs.
- Exécutez la commande ci-dessous pour enregistrer une image Docker (arithmétique) dans votre .tar préféré archive (
arm_image.tar
). Vous pouvez maintenant partager le .tar archiver avec d'autres développeurs afin qu'ils puissent charger l'image.
docker save arithmetic > arm_image.tar
2. Maintenant, exécutez la commande ci-dessous pour créer un répertoire avec le nom de votre choix (mkdir arm
). Mais pour cette démo, le répertoire est nommé arm
. La commande extrait ensuite l'image du .tar archive (-xf arm_image.tar
) dans le nouveau répertoire (arm
).
Extraire le contenu du .tar archive vous permet de confirmer si l'image que vous avez enregistrée dans le fichier .tar archive existe.
mkdir arm && tar -xf arm_image.tar -C arm
3. Enfin, exécutez l'tree
commande ci-dessous pour afficher l'arborescence des répertoires de l'image que vous avez extraite dans le ~/arm
annuaire. tree ~/arm
Ci-dessous, vous pouvez voir les fichiers et sous-répertoires à l'intérieur du répertoire où vous avez extrait l'image Docker.
Si vous prévoyez de partager votre image Docker sur le hub Docker, la meilleure option est d'exécuter la
docker save
commande. Pourquoi? Avec ladocker save command
, vous enregistrez essentiellement l'image exactement comme elle est censée s'exécuter. De plus, vous ne pouvez publier des images que sur le hub Docker, donc certainement, ladocker export command
n'est pas une bonne option.
Charger des images Docker
En supposant que vous ayez déjà enregistré une image à des fins de sauvegarde ou de partage, comment la chargeriez-vous sur une machine ? Pas de soucis, le docker load
commande peut aider. Le docker load
La commande vous permet de charger une image ou un référentiel sur votre ordinateur, en restaurant à la fois les images et les balises.
Pour mieux voir comment le docker load
commande fonctionne, supprimez toutes les images Docker que vous avez créées précédemment.
1. Exécutez la commande ci-dessous pour répertorier toutes les images
Docker dans votre appareil.
docker images
Ci-dessous, vous pouvez voir qu'il y a deux images disponibles. Notez l'ID D'IMAGE de chacune des images car vous supprimerez ces images à l'étape suivante.
2. Exécutez la commande ci-dessous pour supprimer (rm
) Images Docker par les ID d'image que vous spécifiez. Remplacer imageID1
et imageID2
avec les ID d'image que vous avez notés à la première étape.
docker image rm imageID1 imageID2
3. Maintenant, exécutez le docker load
commande ci-dessous pour charger une image depuis un .tar archive (arm_image.tar
).
docker load < arm_image.tar
4. Réexécutez les docker images
comme vous l'avez fait à la première étape pour répertorier toutes les images disponibles sur votre machine. docker images
docker images
Ci-dessous, vous pouvez voir l'image nouvellement chargée.
5. Enfin, exécutez la commande ci-dessous pour exécuter et tester si l'image fonctionne.
docker run arithmetic
Notez que la commande a renvoyé une valeur de 10, ce qui indique que l'image chargée fonctionne.
Conclusion
Tout au long de ce didacticiel, vous avez appris à exporter et importer des conteneurs, ainsi qu'à charger et enregistrer des images. Vous devriez maintenant avoir une connaissance de base de la conversion de vos images de sauvegarde Docker et de vos conteneurs sous une forme partageable, telle qu'un fichier TAR.
À un moment donné, vous devrez partager votre image ou votre conteneur Docker. Maintenant, comment comptez-vous intégrer ces nouvelles connaissances lorsque vous travaillez avec des conteneurs et des images Docker, peut-être un système de sauvegarde ?