Comment partager des images Docker avec d’autres –
Vous avez créé une image Docker que vous devez partager avec un collègue ? Voici comment vous pouvez distribuer une image sans que le destinataire n’ait besoin de l’exécuter docker build
eux-mêmes.
Partager une image prédéfinie au lieu d’un Dockerfile
vous permet de vous assurer que votre collègue utilise exactement le même logiciel. La réexécution de la compilation peut entraîner un environnement légèrement différent. Vous avez deux options pour diffuser votre image, selon la situation.
Sommaire
Utiliser un registre Docker
Le moyen le plus simple de partager une image Docker est de la transférer dans un registre Docker. Cette fonctionnalité est entièrement intégrée à la CLI Docker. Vous n’avez pas besoin d’effectuer de transferts de fichiers manuels lorsque vous utilisez cette méthode.
Le registre par défaut est Docker Hub. Cela vous permet de partager publiquement des images et vous donne également un référentiel privé. Créez un compte sur Docker Hub, puis exécutez docker login
dans votre terminal. Fournissez les détails de votre compte pour connecter la Docker CLI à votre compte.
Ensuite, construisez votre image comme d’habitude, en utilisant docker build
. Ajoutez une balise qui commence par votre nom d’utilisateur Docker Hub :
docker build -t my-account/my-image:latest .
Utilisez ensuite le docker push
commande pour pousser l’image taguée vers Docker Hub :
docker push my-account/my-image:latest
Votre image est maintenant stockée en toute sécurité dans Docker Hub. Les autres utilisateurs pourront le retirer en utilisant le docker pull
ou alors docker run
commandes. Vous avez fini de partager votre image !
Pour une utilisation dans le monde réel, Docker Hub peut ne pas être suffisant. Si vous faites partie d’une équipe de développement, vous souhaiterez probablement conserver les images sur votre propre serveur, au lieu du registre public Hub. Vous pouvez créer un serveur de registre auto-hébergé à la place pour obtenir un stockage privé entièrement compatible avec le docker push
et docker pull
commandes. Cela vous permet de partager facilement des images avec toute personne pouvant accéder à votre registre privé.
Exportation d’images
Si l’utilisation d’un registre n’est pas une option, vous pouvez exporter manuellement les archives d’images Docker à la place. Cette fonctionnalité est également intégrée à la CLI Docker. Construisez votre image puis utilisez le docker save
commande pour obtenir un tar
archive de son contenu :
docker save my-image:latest > my-image.tar
L’exportation peut prendre quelques instants. Docker inclura tout le nécessaire pour recréer l’image – c’est tous les calques de votre Dockerfile
, ainsi que les calques hérités de votre image de base. L’archive contiendra également des informations sur les balises associées à l’image.
Comme la sortie est un simple tar
fichier, vous êtes maintenant libre de le distribuer de la manière que vous choisissez. Les archives peuvent être assez volumineuses, vous feriez donc généralement mieux de les télécharger sur un serveur de fichiers ou un fournisseur de stockage en nuage.
Pour utiliser une image exportée, exécutez le docker load
commander. Celui-ci accepte un tar
archives produites par docker save
comme flux d’entrée. Docker chargera le contenu de l’archive et l’ajoutera à votre liste d’images locales.
docker load < my-image.tar
Vous verrez maintenant l’image nouvellement importée dans votre docker images
production. Vous êtes prêt à démarrer un nouveau conteneur avec docker run
.
L’exportation et l’importation d’images ajoutent quelques étapes supplémentaires à l’utilisation d’un registre Docker. Vous devrez transférer manuellement le fichier entre les clients. Par conséquent, cette approche est moins adaptée à une utilisation fréquente, même si elle présente également des avantages.
Conversion d’images en tar
archive peut être utile pour le stockage à long terme. Si vous manquez d’espace sur votre serveur de registre, l’archivage d’anciennes images et le téléchargement de leurs tars
pour sauvegarder le stockage de fichiers pourrait être un moyen rentable de récupérer une certaine capacité. Vous seriez toujours en mesure de récupérer l’image si jamais vous en aviez besoin à l’avenir.
Qu’en est-il de l’« exportation docker » ?
Docker a une autre commande liée à l’exportation, docker export
. Cela ne doit pas être confondu avec docker save
. Tandis que save
fonctionne avec des images, export
gère réellement l’individu conteneurs.
docker export
produira un tar
archive du système de fichiers d’un conteneur. Cela peut être utilisé pour restaurer une réplique du conteneur sur une autre machine. Si vous inspectez le contenu de l’archive, vous verrez qu’il ne s’agit que d’un système de fichiers racine Linux ordinaire, avec des répertoires comme /bin
, /etc
et /usr
.
docker export my-container > my-container.tar
docker export
est utile si vous souhaitez prendre un instantané d’un conteneur pour une restauration ultérieure. Cependant, les archives de conteneurs ne sont pas importées de la manière à laquelle vous pourriez vous attendre. Comme un conteneur représente un environnement en cours d’exécution, vous ne pouvez pas en « importer » directement. Au lieu de cela, l’importation d’une archive de conteneur construit un Nouveau image.
docker import my-container.tar my-image:latest
Dans cet exemple, Docker prendra le système de fichiers dans my-container.tar
et construire automatiquement une nouvelle image appelée my-image:latest
. Cela aura le même système de fichiers mais pas la même image de base ou la même configuration Docker que le conteneur d’origine que vous avez exporté.
Résumé
Docker facilite le partage d’images d’applications et d’environnements de développement avec vos collaborateurs. Il est généralement préférable de transférer les images vers un référentiel centralisé d’où tout le monde peut les extraire. Dans certains scénarios, il peut être plus judicieux d’exporter une image vers une archive que vous distribuez manuellement.
Docker vous permet également d’exporter le système de fichiers d’un conteneur pour une restauration ultérieure vers une image. Soyez prudent lorsque vous l’utilisez car il ne s’agit pas d’une reconstruction exacte et toutes les données du système de fichiers ne sont pas incluses. Tous les volumes montés sur le conteneur d’origine ne seront pas inclus dans l’archive du système de fichiers, vous devez donc prendre des mesures pour les sauvegarder séparément.