Dive, une plongée dans les images Docker
Photo de James Thornton sur Unsplash

La construction d’images Docker est devenue monnaie courante dans le monde des SI. Cependant et malgré l’utilisation d’images de référence, nos images Docker dans leur repository sont comme des boites noires dont personne ne sait trop de quoi elles sont vraiment constituées. Pire encore, dans un processus continu DevOps, aucun métrique ne permet de mesurer le niveau d’optimisation de notre image de conteneur.

Certes il existe les commandes docker inspect <image> ou encore docker history <image> mais ce sont lĂ  des commandes peu pratiques Ă  manier.

C’est en cela que l’outil Dive va nous permettre de plonger au coeur de nos images Docker / OCI et nous permettre de savoir enfin simplement ce qu’elles contiennent.



Les fonctionnalités

Passons en revue les caractéristiques de l’outil et voyons ce qu’il peut nous apporter :

  • Affichage du contenu de l’image Docker, pour chaque layer de l’image, il est possible de naviguer dans son système de fichiers
  • Indication des modifications au niveau de chaque layer (ajout, modification, suppression)
  • Estimation d’un score d’image efficiency
  • IntĂ©gration dans un CI possible pour calculer l’image efficiency et dĂ©finir une limite blocante

DĂ©monstration

Voyons un cas concret et analysons une image générée par Builpacks et Spring Native :

Que nous apprend l’outil Dive :

  • Notre image est faite de 6 layers dont nous pouvons voir les changements qu’ils opèrent dans le filesystem
  • Sur les 82 Mo de l’image, 481 octets peuvent ĂŞtre rĂ©cupĂ©rĂ©s autant dire pas grand chose d’oĂą le score image efficiency de 99%
  • L’aspect visuel de l’outil rend plus comprĂ©hensible les actions des diffĂ©rentes couches : ajout d’un utilisateur cnb, ajout de l’exĂ©cutable dans le rĂ©pertoire worskpace,…

Conclusion

Cet outil simple devrait permettre à tout développeur de comprendre l’impact de chaque ligne de son Dockerfile. De plus, la taille des images étant de plus en plus critique dans le contexte des déploiements, c’est aussi un moyen d’imposer une limite ou du moins un niveau de qualité.

Et vous, qu’en pensez-vous ?

Cheers…

Jean-Jerome Levy

Ecrit par

Jean-JĂ©rĂ´me LĂ©vy

Consultant DevOps

Professionnel chevronné dans le domaine de l’informatique, cumulant plus de 20 années d’expérience au sein de DSI de grandes entreprises, mon expertise diversifiée m’a permis de jouer un rôle clé dans de nombreux projets, caractérisés par la mise en place de pratiques DevOps innovantes.