DinD ? DiY !

Si, vous travaillez sur la création de pipelines d’environnement de tests ou d’intégration continue, peut importe les outils (Jenkins, GitlabCI, Bamboo…) vous avez peut-être fait des recherches sur la méthode dind (Docker in Docker).

En consultant ses origines sur le Github de son créateur, Jerome Petazzoni, on observe un warning :

If you came here because you would like to run a testing system like Jenkins in a container, and want that container to spin up more containers, then please read this blog post first. Thank you!

Un peu plus bas, un second warning :

This work is now obsolete, thanks to the combined efforts of some amazing people like @jfrazelle and @tianon, who also are black belts in the art of putting IKEA furniture together.

L’article auquel il fait référence expose les raisons pour lesquels on aime utiliser DinD et aussi et surtout… pourquoi on ne devrait pas/plus le faire… Je vous invite vivement à le parcourir afin de découvrir plus en détails ces points… très sensibles :

  • La sécurité
  • Le stockage
  • La corruption de données

Souvent cette méthode est utilisée (qui a dit tous le temps ?)… Elle est même citée sur le site de GitlabCI :

  1. Le Shell executor
  2. Docker in Docker
  3. Docker socket binding