Table des matières
- Qu'est-ce qu'une image Docker ?
- Image Docker ou conteneur Docker : quelle différence ?
- Docker Hub : où trouver les images ?
- Télécharger une image Docker
- Comprendre le résultat
- Télécharger une version précise d'une image
- Comprendre les tags Docker
- Afficher les images Docker
- Lister les images Docker
- Comprendre les informations affichées
- Rechercher une image spécifique
- Télécharger plusieurs versions d'une même image
- Comprendre les couches (Layers)
- Comment fonctionnent les layers ?
- Pourquoi Docker utilise-t-il des couches ?
- Afficher les informations détaillées d'une image
- Télécharger automatiquement une image
- Supprimer une image Docker
- Nettoyer les images inutilisées
- Supprimer toutes les images inutilisées
- Bonnes pratiques
- Conclusion
Introduction
Lorsqu'on débute avec Docker, on entend très rapidement parler des images et des conteneurs. Ces deux notions sont étroitement liées, mais elles ne désignent pas la même chose. Beaucoup de débutants pensent qu'une image Docker est simplement un conteneur arrêté, alors qu'il s'agit en réalité de deux éléments complètement différents.
Dans le tutoriel précédent, nous avons découvert comment lancer notre premier conteneur Docker. Nous avons utilisé la commande docker run sans forcément comprendre ce qui se passait en arrière-plan. Pourtant, avant de pouvoir créer un conteneur, Docker doit obligatoirement disposer d'une image.
Une image Docker est le point de départ de tous les conteneurs. Elle contient tout le nécessaire pour exécuter une application : le système d'exploitation de base, les logiciels, les bibliothèques, les dépendances ainsi que les fichiers de configuration. À partir d'une seule image, il est possible de créer autant de conteneurs que souhaité.
Dans ce tutoriel, vous allez découvrir ce qu'est une image Docker, comment la télécharger depuis Docker Hub, afficher les images présentes sur votre ordinateur, comprendre le rôle des tags et des layers, puis apprendre à supprimer les images devenues inutiles. À la fin de ce guide, vous aurez une vision claire du fonctionnement des images Docker et vous serez prêt à poursuivre votre apprentissage avec les volumes et les réseaux Docker.
Qu'est-ce qu'une image Docker ?
Une image Docker est un modèle en lecture seule utilisé pour créer des conteneurs. Elle regroupe tous les éléments nécessaires au fonctionnement d'une application afin que celle-ci puisse être exécutée de manière identique sur n'importe quel ordinateur disposant de Docker.
Contrairement à un conteneur, une image n'est jamais modifiée lorsqu'elle est utilisée. Elle sert simplement de modèle. Chaque fois que vous créez un nouveau conteneur, Docker réalise une copie de cette image et y ajoute une couche d'écriture propre au conteneur. C'est cette couche qui enregistre les modifications effectuées pendant son utilisation.
Une image peut notamment contenir :
- un système d'exploitation léger comme Ubuntu, Debian ou Alpine ;
- les logiciels nécessaires au fonctionnement de l'application ;
- les bibliothèques et les dépendances ;
- les fichiers de configuration ;
- les fichiers de l'application elle-même.
Grâce à ce principe, deux conteneurs créés à partir de la même image démarreront exactement dans les mêmes conditions.
Par exemple, si vous utilisez l'image officielle Ubuntu, chaque nouveau conteneur créé à partir de cette image disposera du même système Ubuntu. Les modifications effectuées dans un conteneur n'auront aucun impact sur les autres conteneurs créés à partir de cette même image.
Image Docker ou conteneur Docker : quelle différence ?
L'une des erreurs les plus fréquentes consiste à confondre une image avec un conteneur. Pourtant, leur rôle est bien différent.
Une image Docker est un modèle qui ne change pas. Elle sert uniquement à créer des conteneurs. Un conteneur, quant à lui, est une instance en cours d'exécution créée à partir d'une image. Il possède son propre espace d'écriture et peut être démarré, arrêté ou supprimé à tout moment.
Prenons un exemple simple :
Imaginez qu'une image Docker soit le plan de construction d'une maison. Ce plan contient toutes les informations nécessaires pour construire une maison, mais il ne s'agit pas encore d'une maison habitable.
Le conteneur représente alors la maison construite à partir de ce plan. Vous pouvez construire plusieurs maisons identiques en utilisant exactement le même plan, sans jamais modifier le plan d'origine.
Docker fonctionne exactement de cette manière.
Tous ces conteneurs utilisent la même image Ubuntu, mais chacun fonctionne indépendamment des autres.
À retenir : Une image est un modèle, tandis qu'un conteneur est une instance créée à partir de ce modèle.
Docker Hub : où trouver les images ?
Dans la majorité des cas, les images Docker sont téléchargées depuis Docker Hub, qui est le registre officiel proposé par Docker.
Docker Hub peut être comparé à une immense bibliothèque d'images prêtes à l'emploi. Des milliers d'images y sont mises à disposition gratuitement par Docker, par des entreprises ou par la communauté. Il suffit de connaître le nom d'une image pour pouvoir la télécharger en quelques secondes.
Voici le lien pour accéder à Docker Hub : https://hub.docker.com
On y retrouve notamment les images officielles de nombreux logiciels et systèmes d'exploitation, comme :
- Ubuntu ;
- Debian ;
- Alpine Linux ;
- Nginx ;
- Apache HTTP Server ;
- MySQL ;
- PostgreSQL ;
- Redis ;
- MongoDB ;
- Node.js ;
- Python ;
- PHP.
Les images officielles sont maintenues directement par Docker ou par les éditeurs des logiciels concernés. Elles sont régulièrement mises à jour afin de corriger les failles de sécurité et d'apporter les dernières améliorations.
Il est également possible de créer ses propres images et de les publier sur Docker Hub afin de les partager avec d'autres utilisateurs ou avec les membres de son équipe.
Dans le prochain chapitre, nous allons apprendre à télécharger une image Docker sur notre ordinateur grâce à la commande docker pull.
Image Nginx officielle
Télécharger une image Docker
Maintenant que nous savons ce qu'est une image Docker et où elle est stockée, il est temps d'apprendre à en télécharger une sur notre ordinateur.
Pour récupérer une image depuis Docker Hub, Docker met à disposition la commande docker pull. Cette commande contacte automatiquement le registre Docker Hub, recherche l'image demandée puis la télécharge sur votre machine. Une fois le téléchargement terminé, l'image est enregistrée localement et pourra être réutilisée autant de fois que nécessaire.
La syntaxe de la commande est la suivante :
docker pull nom_image
Par exemple, pour télécharger la dernière version de l'image Ubuntu, utilisez la commande suivante :
docker pull ubuntu
Après quelques secondes, Docker affiche un résultat similaire à celui-ci :
Comprendre le résultat
Chaque ligne affichée possède une signification bien précise.
- Using default tag: latest indique que Docker utilise automatiquement le tag latest, car aucune version n'a été précisée.
- Pulling from library/ubuntu signifie que Docker télécharge l'image officielle Ubuntu depuis Docker Hub.
- Pull complete confirme que les différentes couches (layers) de l'image ont été téléchargées avec succès.
- Digest correspond à l'empreinte numérique unique de cette image. Elle permet de vérifier son intégrité.
- Status: Downloaded newer image confirme que l'image est désormais disponible sur votre ordinateur.
Bon à savoir : Si l'image est déjà présente sur votre machine, Docker ne la téléchargera pas une seconde fois. Il vérifiera simplement si une version plus récente est disponible.
Télécharger une version précise d'une image
Par défaut, Docker télécharge la version identifiée par le tag latest. Cependant, il est souvent préférable de choisir une version spécifique, notamment en production ou lorsque vous souhaitez reproduire exactement le même environnement.
Pour cela, il suffit d'ajouter le numéro de version après le nom de l'image, séparé par deux-points (:).
Par exemple, pour télécharger Ubuntu 24.04, utilisez la commande suivante :
docker pull ubuntu:24.04
Après quelques instants, Docker télécharge uniquement cette version de l'image.
Vous pouvez procéder de la même manière avec de nombreuses autres images :
docker pull nginx:1.29
docker pull mysql:8.4
docker pull node:22
Chaque image possède plusieurs versions disponibles sur Docker Hub. Il est donc recommandé de consulter les tags proposés avant de télécharger une image.
Comprendre les tags Docker
Un tag est une étiquette associée à une image Docker. Il permet d'identifier précisément une version.
Prenons l'exemple suivant :
ubuntu:24.04
Dans cet exemple :
- ubuntu correspond au nom de l'image ;
- 24.04 correspond au tag.
Autrement dit, Docker téléchargera précisément la version Ubuntu 24.04.
Voici quelques autres exemples :
| Image | Tag | Signification |
|---|---|---|
| ubuntu:24.04 | 24.04 | Ubuntu 24.04 |
| mysql:8.4 | 8.4 | MySQL version 8.4 |
| node:22 | 22 | Node.js version 22 |
| python:3.13 | 3.13 | Python version 3.13 |
Lorsque vous ne précisez aucun tag, Docker ajoute automatiquement le tag latest.
Ainsi, ces deux commandes sont équivalentes :
docker pull ubuntu
docker pull ubuntu:latest
Même si le tag latest est pratique pour découvrir Docker, il est généralement déconseillé dans un environnement de production. En effet, ce tag peut évoluer au fil du temps et entraîner des changements de version imprévus. Pour garantir un environnement stable et reproductible, il est préférable de télécharger une version précise, comme ubuntu:24.04 ou mysql:8.4.
Afficher les images Docker
Après avoir téléchargé une ou plusieurs images, il est souvent nécessaire de vérifier qu'elles sont bien présentes sur votre ordinateur. Docker propose plusieurs commandes permettant de consulter la liste des images enregistrées localement ainsi que leurs principales caractéristiques.
Cette étape est particulièrement utile pour connaître les images disponibles avant de créer un nouveau conteneur ou pour identifier celles qui occupent de l'espace disque.
Lister les images Docker
Pour afficher toutes les images présentes sur votre ordinateur, utilisez la commande suivante :
docker images
Cette commande affiche un tableau contenant les principales informations sur chaque image téléchargée.
Par exemple :
Depuis les versions récentes de Docker, il est également possible d'utiliser la commande suivante :
docker image ls
Cette commande produit le même résultat que docker images. La différence est uniquement syntaxique : docker image ls s'inscrit dans la nomenclature de Docker qui regroupe les commandes par catégorie comme image, container, network ou volume.
Les deux commandes restent parfaitement valides.
Comprendre les informations affichées
Le tableau retourné par Docker contient plusieurs colonnes importantes.
IMAGE
La colonne IMAGE indique le nom de l'image ainsi que son tag.
Par exemple :
- ubuntu:latest correspond à la dernière version d'Ubuntu ;
- ubuntu:24.04 correspond à la version 24.04 d'Ubuntu ;
- nginx:latest correspond à la dernière version de Nginx.
On remarque ici que deux versions d'Ubuntu sont présentes sur la machine. Docker est capable de stocker plusieurs versions d'une même image sans provoquer de conflit.
ID
Chaque image Docker possède un identifiant unique appelé Image ID.
Par exemple :
4fbb8e6a8395
Cet identifiant est généré automatiquement par Docker et permet de distinguer deux images, même si elles portent le même nom.
Il est également possible d'utiliser cet identifiant dans certaines commandes, notamment pour supprimer ou inspecter une image.
Par exemple :
docker image inspect 4fbb8e6a8395
DISK USAGE
La colonne DISK USAGE indique l'espace disque réellement occupé par l'image sur votre ordinateur.
Par exemple :
- Ubuntu Latest occupe 161 Mo ;
- Ubuntu 24.04 occupe 119 Mo ;
- Nginx occupe 241 Mo.
Cette information est utile pour identifier les images qui prennent beaucoup de place sur votre disque.
CONTENT SIZE
La colonne CONTENT SIZE représente la taille du contenu de l'image.
C'est notamment grâce au système de layers que Docker peut partager une partie des fichiers entre plusieurs images, ce qui évite de les dupliquer inutilement.
Nous reviendrons sur ce fonctionnement dans la prochaine partie du tutoriel.
EXTRA
La colonne EXTRA peut afficher différentes informations supplémentaires.
Dans notre exemple, la lettre U signifie que l'image est actuellement utilisée (In Use) par au moins un conteneur.
Rechercher une image spécifique
Lorsque votre ordinateur contient un grand nombre d'images, il peut être utile d'afficher uniquement celles qui correspondent à un nom précis.
Sous Linux, vous pouvez utiliser la commande suivante :
docker images | grep ubuntu
Résultat :
Cette commande affiche uniquement les images Ubuntu présentes sur votre ordinateur.
Télécharger plusieurs versions d'une même image
Docker permet de conserver plusieurs versions d'une même image.
Par exemple :
docker pull ubuntu:22.04
docker pull ubuntu:24.04
Si vous affichez ensuite les images :
docker images
Vous obtiendrez un résultat similaire à celui-ci :
Les deux versions coexistent sans conflit. Lors de la création d'un conteneur, il suffira de préciser le tag souhaité.
Comprendre les couches (Layers)
L'un des principaux avantages de Docker est son système de couches, également appelées layers. Même si ce fonctionnement est totalement transparent pour l'utilisateur, il joue un rôle essentiel dans les performances de Docker.
Contrairement à ce que l'on pourrait penser, une image Docker n'est pas constituée d'un seul fichier. Elle est composée de plusieurs couches empilées les unes sur les autres. Chaque couche représente une étape de la construction de l'image, comme l'installation d'un système d'exploitation, l'ajout d'un logiciel ou la copie de fichiers.
Grâce à cette organisation, Docker peut réutiliser les couches déjà présentes sur votre ordinateur au lieu de les télécharger ou de les recréer systématiquement.
Comment fonctionnent les layers ?
Prenons l'exemple d'une image Ubuntu sur laquelle on installe Nginx.
La construction de l'image peut être représentée de la manière suivante :
Chaque bloc représente une couche indépendante.
Lorsque Docker crée une image, il empile simplement ces différentes couches les unes au-dessus des autres pour obtenir l'image finale.
Pourquoi Docker utilise-t-il des couches ?
Le système de couches permet avant tout d'éviter les duplications inutiles.
Imaginons que vous téléchargiez deux images différentes basées sur Ubuntu.
La première contient Apache et la seconde contient Nginx.
Docker ne téléchargera pas deux fois Ubuntu.
La couche Ubuntu sera téléchargée une seule fois puis partagée entre les deux images. Seules les couches contenant Apache ou Nginx seront ajoutées.
Ce mécanisme permet :
- d'économiser de l'espace disque ;
- d'accélérer les téléchargements ;
- de réduire le trafic réseau ;
- de créer les conteneurs beaucoup plus rapidement.
C'est l'une des raisons pour lesquelles Docker est aussi performant.
Afficher les informations détaillées d'une image
Il est parfois nécessaire d'obtenir des informations détaillées sur une image.
Pour cela, Docker propose la commande :
docker image inspect ubuntu
Il est également possible d'utiliser le nom complet de l'image :
docker image inspect ubuntu:24.04
ou directement son identifiant :
docker image inspect 4fbb8e6a8395
Cette commande retourne un document au format JSON contenant de nombreuses informations techniques.
On y retrouve notamment :
- l'identifiant de l'image ;
- la date de création ;
- le système d'exploitation ;
- l'architecture utilisée ;
- les variables d'environnement ;
- le répertoire de travail ;
- les commandes enregistrées dans les métadonnées de l'image.
Ces informations sont particulièrement utiles lorsque l'on souhaite comprendre le contenu d'une image ou résoudre un problème.
Télécharger automatiquement une image
Il n'est pas toujours nécessaire d'utiliser la commande docker pull.
En effet, si vous lancez directement un conteneur à partir d'une image qui n'est pas encore présente sur votre ordinateur, Docker téléchargera automatiquement cette image avant de créer le conteneur.
Par exemple :
docker run ubuntu
Si l'image Ubuntu n'est pas disponible localement, Docker effectuera automatiquement les opérations suivantes :
- rechercher l'image sur le registre configuré ;
- télécharger l'image ;
- créer un conteneur ;
- démarrer ce conteneur.
C'est pourquoi de nombreux utilisateurs utilisent directement la commande docker run sans exécuter docker pull au préalable.
Supprimer une image Docker
Au fil du temps, votre ordinateur peut contenir de nombreuses images devenues inutiles. Pour libérer de l'espace disque, Docker permet de supprimer facilement une image.
La commande est la suivante :
docker image rm ubuntu:24.04
Il est également possible d'utiliser la forme abrégée :
docker rmi ubuntu:24.04
Les deux commandes sont équivalentes.
Nettoyer les images inutilisées
Après plusieurs semaines d'utilisation, certaines images ne sont plus utilisées par aucun conteneur.
Docker permet de nettoyer les images inutilisées grâce à la commande :
docker image prune
Avant de lancer le nettoyage, Docker demande une confirmation.
Une fois validé, le nettoyage supprime les images concernées par cette commande.
Cette commande peut permettre de récupérer de l'espace disque lorsque des images devenues inutiles sont présentes sur la machine.
Supprimer toutes les images inutilisées
Pour effectuer un nettoyage plus complet, Docker propose également la commande suivante :
docker image prune -a
Contrairement à la commande précédente, celle-ci supprime toutes les images qui ne sont utilisées par aucun conteneur, même si elles possèdent un tag.
Il est donc recommandé de vérifier les images présentes sur votre machine avant d'utiliser cette commande.
Bonnes pratiques
Lorsque vous travaillez avec Docker, quelques bonnes pratiques permettent de maintenir un environnement propre et facile à gérer.
Il est recommandé d'utiliser des versions précises des images plutôt que le tag latest, afin de garantir que tous les environnements utilisent exactement la même version d'un logiciel.
Il est également conseillé de supprimer régulièrement les images devenues inutiles afin de limiter l'espace occupé sur le disque.
Enfin, privilégiez les images officielles publiées sur Docker Hub. Elles sont généralement mieux maintenues et suivies que des images publiées par des sources inconnues.
Conclusion
Les images Docker constituent la base de tous les conteneurs. Elles regroupent l'ensemble des éléments nécessaires au fonctionnement d'une application et permettent de créer rapidement des environnements identiques sur n'importe quelle machine disposant de Docker.
Dans ce tutoriel, nous avons appris à télécharger des images depuis Docker Hub, à les afficher, à comprendre leur structure ainsi que leur système de couches (layers). Nous avons également découvert comment inspecter leur contenu et supprimer les images devenues inutiles.
Vous disposez désormais des connaissances nécessaires pour manipuler efficacement les images Docker. Dans le prochain tutoriel, nous découvrirons comment créer et utiliser des volumes Docker afin de conserver les données même après la suppression d'un conteneur.
Commentaires
Laisser un commentaire
Soyez le premier à commenter cet article !