Avant de parler de conteneurisation, il est essentiel de comprendre ce qu’est une image Docker. En effet, un conteneur repose sur des images. Ces images jouent le rôle de modèles (ou de gabarits) qui serviront de base pour la création des conteneurs.
Tout d’abord, les images Docker assemblent une série de couches, renfermant tous les éléments nécessaires au bon fonctionnement de l’application. De plus, ces couches sont en lecture seule, et chaque modification effectuée donne naissance à une nouvelle couche distincte. Pour réaliser cela, les images Docker font usage d’un système de fichiers en couches superposées. Ce système de fichier est comparable à un modèle en oignon, également connu sous le nom d’UnionFS.
Télécharger une image docker
Des images prêtes à l’emploi sont disponibles sur des dépôts, il existe des dépôts privés et public. Commençons par nous rendre sur le dépôt officiel de Docker à l’adresse https://hub.docker.com.
La récupération d’une image se fera à l’aide de la commande « docker pull » suivi de nom de l’image. Par exemple si nous souhaitons récupérer l’image de Ubuntu, sur la plateforme « Dockerhub ». Il nous faudra renseigner dans la barre de recherche « Ubuntu ».
Le résultat de la recherche, nous avons plusieurs propositions. Nous recommandons d’utiliser les images officielles. En cliquant sur l’image, nous aurons accès à plus d’information. Parmi ses informations nous pouvons voir qu’elle est la commande à exécuter pour récupérer l’image.
Récupération d’une image Docker depuis le Hub officiel
Sur notre machine, nous exécuterons la commande donnée sur la plateforme « DockerHub ».
[root@docker ~]# docker pull ubuntu
Vérifions que l’image a bien été téléchargée en exécutant la commande « docker images ».
La réponse à la commande « docker pull ubuntu » indique que nous avons obtenu la version marquée (tag) « latest ». Cette information est accessible lorsque nous listons les images présentes sur le système. En effet, nous avons la possibilité de sélectionner une version spécifique si plusieurs version d’une même images existe.
Lorsque une Image Docker est téléchargée sans spécifier la version, l’image portant l’étiquette « latest » est utilisée par défaut. Pour lister les étiquettes d’une image, il faudra consulter l’onglet « tag » de la description de l’image sur la plateforme DockerHub.
Cette image a pour identifiant une valeur exprimée en sha256, la valeur est tronquée par défaut. Le « vrai » identifiant, cette à dire la valeur qui n’est pas tronqué pourras être obtenu en ajoutant le commutateur « no-trunc ».
[root@docker ~]# docker images --no-trunc
Recherche d’image Docker depuis le CLI
Pour rechercher une image, nous pouvons le faire sans passer par un navigateur WEB. En effet, la commande « docker », nous permettra de rechercher un conteneur en se basant sur un mot clé. Par exemple, si nous souhaitons récupérer une image d’un serveur web. Nous exécuterons la commande « docker search » suivi d’un mot clé. Ainsi si nous voulons récupérer une image Docker qui exécutera un serveur web, le mot clé sera « http ».
[root@docker ~]# docker search http
La réponse de la commande « docker search », nous renvoie les mêmes informations que le portail Docker Hub. Dans la mesure du possible, nous prioriserons les images officielles ou celle avec un nombre d’étoile important.
Fonctionnement d’une image
Il faut voir une image Docker comme à LiveCD. Lorsque vous lancez une image, elle reste en lecture seule, et toutes les modifications que vous apportez sont enregistrées séparément. L’image d’origine, combinée à toutes les couches de modifications, forme le conteneur. C’est cette combinaison qui permet aux conteneurs d’être légers, reproductibles et efficaces
Lorsque nous exécutons une image, nous créons un conteneur à partir de cette image. Ce conteneur constitue un environnement isolé et autonome où l’application ou le service spécifié par l’image peut s’exécuter. L’image de base demeure inchangée, quelle que soit l’action que nous effectuons dans le conteneur. Chaque modification que nous apportons au conteneur est enregistrée dans une couche de modification distincte (overlay). L’image d’origine de demeurer inchangée. Cette approche favorise la reproductibilité et facilite la gestion des applications. Nous pourrions toujours lancer un nouveau conteneur à partir de la même image d’origine, sans affecter des modifications précédentes. Les conteneurs offrent une isolation et une portabilité tout en maintenant la cohérence de l’image initiale, ce qui garantit un environnement reproductible et fiable.