Qu'est-ce qu'une image ?
Explication
Étant donné qu'un conteneur est un processus isolé, d'où tire-t-il ses fichiers et sa configuration ? Comment partagez-vous ces environnements ?
C'est là que les images de conteneur entrent en jeu. Une image de conteneur est un paquet standardisé qui inclut tous les fichiers, binaires, bibliothèques et configurations nécessaires pour exécuter un conteneur.
Pour une image PostgreSQL, cette image emballera les binaires de la base de données, les fichiers de configuration et d'autres dépendances. Pour une application web Python, elle inclura le runtime Python, le code de votre application et toutes ses dépendances.
Il y a deux principes importants concernant les images :
-
Les images sont immuables. Une fois qu'une image est créée, elle ne peut pas être modifiée. Vous ne pouvez que créer une nouvelle image ou y ajouter des modifications.
-
Les images de conteneur sont composées de couches. Chaque couche représente un ensemble de modifications du système de fichiers qui ajoutent, suppriment ou modifient des fichiers.
Ces deux principes vous permettent d'étendre ou d'ajouter à des images existantes. Par exemple, si vous construisez une application Python, vous pouvez partir de l'image Python et ajouter des couches supplémentaires pour installer les dépendances de votre application et ajouter votre code. Cela vous permet de vous concentrer sur votre application, plutôt que sur Python lui-même.
Trouver des images
Docker Hub est le marché mondial par défaut pour le stockage et la distribution d'images. Il contient plus de 100 000 images créées par des développeurs que vous pouvez exécuter localement. Vous pouvez rechercher des images Docker Hub et les exécuter directement depuis Docker Desktop.
Docker Hub fournit une variété d'images prises en charge et approuvées par Docker, connues sous le nom de Docker Trusted Content. Celles-ci fournissent des services entièrement gérés ou d'excellents points de départ pour vos propres images. Celles-ci incluent :
- Images officielles Docker - un ensemble organisé de dépôts Docker, servant de point de départ pour la majorité des utilisateurs, et comptant parmi les plus sécurisés sur Docker Hub
- Éditeurs vérifiés par Docker - des images de haute qualité provenant d'éditeurs commerciaux vérifiés par Docker
- Open Source sponsorisé par Docker - des images publiées et maintenues par des projets open source sponsorisés par Docker via le programme open source de Docker
Par exemple, Redis et Memcached sont quelques-unes des images officielles Docker prêtes à l'emploi les plus populaires. Vous pouvez télécharger ces images et faire fonctionner ces services en quelques secondes. Il existe également des images de base, comme l'image Docker Node.js, que vous pouvez utiliser comme point de départ et y ajouter vos propres fichiers et configurations.
Essayez-le
Dans cette prise en main, vous apprendrez à rechercher et à extraire une image de conteneur à l'aide de l'interface graphique de Docker Desktop.
Rechercher et télécharger une image
-
Ouvrez le tableau de bord de Docker Desktop et sélectionnez la vue Images dans le menu de navigation de gauche.
-
Sélectionnez le bouton Rechercher des images à exécuter. Si vous ne le voyez pas, sélectionnez la barre de recherche globale en haut de l'écran.
-
Dans le champ Rechercher, entrez "welcome-to-docker". Une fois la recherche terminée, sélectionnez l'image
docker/welcome-to-docker
. -
Sélectionnez Extraire pour télécharger l'image.
En savoir plus sur l'image
Une fois que vous avez téléchargé une image, vous pouvez obtenir de nombreux détails sur l'image via l'interface graphique ou la CLI.
-
Dans le tableau de bord de Docker Desktop, sélectionnez la vue Images.
-
Sélectionnez l'image docker/welcome-to-docker pour ouvrir les détails de l'image.
-
La page de détails de l'image vous présente des informations sur les couches de l'image, les paquets et bibliothèques installés dans l'image, et toutes les vulnérabilités découvertes.
Suivez les instructions pour rechercher et extraire une image Docker à l'aide de la CLI pour afficher ses couches.
Rechercher et télécharger une image
-
Ouvrez un terminal et recherchez des images à l'aide de la commande
docker search
:docker search docker/welcome-to-docker
Vous verrez une sortie comme la suivante :
NAME DESCRIPTION STARS OFFICIAL docker/welcome-to-docker Docker image for new users getting started w… 20
Cette sortie vous montre des informations sur les images pertinentes disponibles sur Docker Hub.
-
Extrayez l'image à l'aide de la commande
docker pull
.docker pull docker/welcome-to-docker
Vous verrez une sortie comme la suivante :
Using default tag: latest latest: Pulling from docker/welcome-to-docker 579b34f0a95b: Download complete d11a451e6399: Download complete 1c2214f9937c: Download complete b42a2f288f4d: Download complete 54b19e12c655: Download complete 1fb28e078240: Download complete 94be7e780731: Download complete 89578ce72c35: Download complete Digest: sha256:eedaff45e3c78538087bdd9dc7afafac7e110061bbdd836af4104b10f10ab693 Status: Downloaded newer image for docker/welcome-to-docker:latest docker.io/docker/welcome-to-docker:latest
Chaque ligne représente une couche différente téléchargée de l'image. N'oubliez pas que chaque couche est un ensemble de modifications du système de fichiers et fournit des fonctionnalités de l'image.
En savoir plus sur l'image
-
Listez vos images téléchargées à l'aide de la commande
docker image ls
:docker image ls
Vous verrez une sortie comme la suivante :
REPOSITORY TAG IMAGE ID CREATED SIZE docker/welcome-to-docker latest eedaff45e3c7 4 months ago 29.7MB
La commande affiche une liste des images Docker actuellement disponibles sur votre système. L'image
docker/welcome-to-docker
a une taille totale d'environ 29.7 Mo.Taille de l'image
La taille de l'image représentée ici reflète la taille non compressée de l'image, et non la taille de téléchargement des couches.
-
Listez les couches de l'image à l'aide de la commande
docker image history
:docker image history docker/welcome-to-docker
Vous verrez une sortie comme la suivante :
IMAGE CREATED CREATED BY SIZE COMMENT 648f93a1ba7d 4 months ago COPY /app/build /usr/share/nginx/html # buil… 1.6MB buildkit.dockerfile.v0 <missing> 5 months ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B <missing> 5 months ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0B <missing> 5 months ago /bin/sh -c #(nop) EXPOSE 80 0B <missing> 5 months ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B <missing> 5 months ago /bin/sh -c #(nop) COPY file:9e3b2b63db9f8fc7… 4.62kB <missing> 5 months ago /bin/sh -c #(nop) COPY file:57846632accc8975… 3.02kB <missing> 5 months ago /bin/sh -c #(nop) COPY file:3b1b9915b7dd898a… 298B <missing> 5 months ago /bin/sh -c #(nop) COPY file:caec368f5a54f70a… 2.12kB <missing> 5 months ago /bin/sh -c #(nop) COPY file:01e75c6dd0ce317d… 1.62kB <missing> 5 months ago /bin/sh -c set -x && addgroup -g 101 -S … 9.7MB <missing> 5 months ago /bin/sh -c #(nop) ENV PKG_RELEASE=1 0B <missing> 5 months ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.25.3 0B <missing> 5 months ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B <missing> 5 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0B <missing> 5 months ago /bin/sh -c #(nop) ADD file:ff3112828967e8004… 7.66MB
Cette sortie vous montre toutes les couches, leurs tailles et la commande utilisée pour créer la couche.
Afficher la commande complète
Si vous ajoutez l'indicateur
--no-trunc
à la commande, vous verrez la commande complète. Notez que, comme la sortie est dans un format de type tableau, les commandes plus longues rendront la sortie très difficile à parcourir.
Dans cette présentation, vous avez recherché et extrait une image Docker. En plus d'extraire une image Docker, vous avez également appris sur les couches d'une image Docker.
Ressources supplémentaires
Les ressources suivantes vous aideront à en savoir plus sur l'exploration, la recherche et la construction d'images :
- Contenu de confiance Docker
- Explorer la vue des images dans Docker Desktop
- Aperçu de Docker Build
- Docker Hub
Prochaines étapes
Maintenant que vous avez appris les bases des images, il est temps d'apprendre à distribuer des images via des registres.