Les images Docker sont organisées en plusieurs couches, chacune représentant une série d’instructions ou de modifications du système de fichiers. Chaque couche est considérée comme une image intermédiaire et est créée à partir de la couche précédente.
1. Dans un Dockerfile, chaque instruction crée une nouvelle couche dans l’image. Par exemple, une instruction “RUN” qui installe un logiciel génère une nouvelle couche avec le logiciel installé.
1. La couche supérieure, ou couche “writable”, est celle où l’application s’exécute.
1. Les couches inférieures sont en lecture seule et contiennent les dépendances de l’application, comme le système d’exploitation, les bibliothèques, etc.
1. Les couches sont stockées de manière incrémentielle, ce qui signifie que si plusieurs images partagent une même base, cette base commune n’est stockée qu’une seule fois sur le disque, ce qui permet un gain de place significatif.
1. Quand une image est mise à jour, seules les couches qui ont changé sont téléchargées, économisant du temps et de la bande passante.
1. Enfin, lors de l’exécution d’un conteneur à partir d’une image, Docker ajoute une couche éditable en dessus de toutes les autres pour gérer tous les changements apportés pendant l’exécution du conteneur.
Cette architecture en couches permet de rendre les conteneurs Docker légers et rapides car seule la couche supérieure doit être modifiée lors de l’exécution d’une application, les autres couches restant en lecture seule.