Cours les couches des images Docker
Que se passe-t-il quand on pull une image ?
Section titled “Que se passe-t-il quand on pull une image ?”docker pull python:3.93.9: Pulling from library/python1e4aec178e08: Downloading [=========================================> ] 45.75MB/55.05MB6c1024729fee: Download completec3aa11fbc85a: Download completeaa54add66b3a: Downloading [================================================> ] 53.31MB/54.59MB9e3a60c2bce7: Downloading [==========> ] 40.86MB/196.9MB3b2123ce9d0d: Waiting079055eff04f: Pulling fs layerefbdad4af3b4: Waiting6052bc42f4a6: WaitingOn voit que différentes couches sont récupérées individuellement.
Ces couches ont des identifiants, des hashs, et des poids, donc des contenus, différents
Observez l’historique de construction de l’image avec
docker image history python:3.9On peut également avoir des informations avancées avec
docker image inspect python:3.9Décortiquer une image
Section titled “Décortiquer une image”Une image est composée de plusieurs layers empilés entre eux par le Docker Engine et de métadonnées.
-
Affichez la liste des images présentes dans votre Docker Engine.
-
Inspectez la dernière image que vous venez de créez (
docker image --helppour trouver la commande) -
Observez l’historique de construction de l’image avec
docker image history <image> -
Visitons en root (
sudo su) le dossier/var/lib/docker/sur l’hôte. En particulier,image/overlay2/layerdb/sha256/:- On y trouve une sorte de base de données de tous les layers d’images avec leurs ancêtres.
- Il s’agit d’une arborescence.
-
Vous pouvez aussi utiliser la commande
docker save votre_image -o image.tar, et utilisertar -C image_decompressee/ -xvf image.tarpour décompresser une image Docker puis explorer les différents layers de l’image. -
Pour explorer la hiérarchie des images vous pouvez installer
https://github.com/wagoodman/dive
Les layers et la mise en cache
Section titled “Les layers et la mise en cache”-
Docker construit les images comme une série de “couches” de fichiers successives.
-
On parle d’Union Filesystem car chaque couche (de fichiers) écrase la précédente.


Ce système économise de la place.
Pour simplifier, chaque instruction du Dockerfile crée une nouvelle couche.
Si une couche est déjà utilisée, elle est mise en cache et ne nécessite pas de
Au lancement d’un container, le Docker Engine rajoute une nouvelle couche de filesystem “normal” read/write par dessus la pile des couches de l’image.
Ce système est au coeur de l’immutabilité des images Docker.
On ne peut pas modifier une image “dans le fond”, c’est toujours le niveau “de surface” qu’on peut modifier.
- Un désavantages : ce système complexifie la compréhension et toute opération d’introspection** : Pas facile de comprendre ce qui se passe et d’aller regarder où se trouve tel fichier.
Les strates en pratique
Section titled “Les strates en pratique”La commande inspect affiche de nombreuses informations sur un conteneur en exécution, dont les éléments de son “layercake”.
docker inspect <container_id_or_name>... "LowerDir": "/var/lib/docker/overlay2/fb94ce5c9b652d1cee5e372e76dd011cb3993d45d6c91f6c5de4d59d33afb9c2-init/diff:/var/lib/docker/overlay2/ab0fd7ce9f469a3a7f6293fde706d7028a45d5ac377224ede0a65af133385149/diff:/var/lib/docker/overlay2/21f47d9ce63dba375dc372c6bd3ad7dabb0219dccb3174d4201cbe049de1234d/diff:/var/lib/docker/overlay2/51fc7c14a3d976ef7d13b9373c902f1d7ce08cdce6f96a493aa74ac98664f773/diff:/var/lib/docker/overlay2/01a6a79a4b75eddd63b52f5a93a67345caaf62313fe081a8e3ea57b2c315a598/diff:/var/lib/docker/overlay2/40070b4000942701b6a9df6537c89ee50d7bf4777615f80d17cd6b476c70ec96/diff:/var/lib/docker/overlay2/82a250b1fb6486d14b1de2c9787d2569f4204108639adfc801a82845863a314d/diff:/var/lib/docker/overlay2/48ba460a8f37e832fda1f53eee0d084dc7fd6402aa430d567be477cc49e66ffe/diff", "MergedDir": "/var/lib/docker/overlay2/fb94ce5c9b652d1cee5e372e76dd011cb3993d45d6c91f6c5de4d59d33afb9c2/merged", "UpperDir": "/var/lib/docker/overlay2/fb94ce5c9b652d1cee5e372e76dd011cb3993d45d6c91f6c5de4d59d33afb9c2/diff", "WorkDir": "/var/lib/docker/overlay2/fb94ce5c9b652d1cee5e372e76dd011cb3993d45d6c91f6c5de4d59d33afb9c2/work"