Leçon 6 : Comprendre les Images Docker et les Couches
Les conteneurs sont éphémères, mais les images sont les plans qui les rendent reproductibles. Examinons comment les images sont construites.
Qu'est-ce qu'une Image Docker ?
Une image Docker est un modèle en lecture seule qui contient les dépendances du système d'exploitation, les bibliothèques et le code d'application nécessaires pour exécuter un logiciel. Les images sont construites à partir d'un ensemble d'instructions définies dans un Dockerfile.
Le Système de Fichiers en Couches
Les images Docker sont construites à l'aide d'une pile de couches en lecture seule. Chaque instruction dans un Dockerfile crée une nouvelle couche.
Principes Clés des Couches :
- Immuabilité : Une fois qu'une couche est créée, elle ne peut pas être modifiée.
- Partage : Si plusieurs images utilisent les mêmes couches de base (par exemple, la même version d'Ubuntu), elles ne stockent cette couche de base qu'une seule fois sur le disque, économisant de l'espace.
- Efficacité : Lorsque vous mettez à jour une image, Docker ne transfère que les couches nouvelles ou modifiées, pas l'image entière.
Les Conteneurs comme Couches
Lorsqu'un conteneur est lancé à partir d'une image, Docker ajoute une seule couche mince et inscriptible au-dessus des couches de l'image. C'est ce qu'on appelle la Couche Conteneur.
- Toutes les modifications apportées à l'intérieur du conteneur en cours d'exécution (écriture de logs, enregistrement de fichiers) se produisent dans cette couche inscriptible.
- Lorsque le conteneur est supprimé, cette couche inscriptible est détruite, ce qui signifie que toutes les modifications sont perdues (sauf si elles sont explicitement sauvegardées ou stockées dans des volumes, ce que nous aborderons plus tard).
Lister et Inspecter les Images
Pour voir toutes les images stockées localement sur votre machine :
bash docker images
Pour obtenir des informations détaillées sur une image spécifique, y compris son historique et ses couches :
bash docker inspect nginx
Pour voir l'historique détaillé (montrant les commandes qui ont construit les couches) :
bash docker history nginx
Comprendre les couches est la première étape vers l'optimisation de vos images en termes de vitesse et de taille.