Les builders d'images OCI, 6 alternatives à Docker

1 mars 2021

Dans les deux premiers épisodes de cette série d’articles sur les conteneurs, nous avons fait un petit tour  des conteneurs applicatifs en général , puis des  container eng ines avec Docker et Podman .

Les containers engines sont très bien pour le poste de travail : ils permettent de tout faire avec un seul outil. En revanche dans d’autre cas, mettons dans une étape d’un pipeline de CI/CD, nous ne voulons rien faire d’autre que construire une image de conteneur avant de la pousser dans un registre d’image. Et pour cet usage, de nombreux outils autre que Docker ont fait leur apparition. Nous allons donc parler des builders.


Nous commencerons par Docker, l’incontournable et son nouveau composant en charge de la construction de conteneurs : BuildKit. Nous regarderons ensuite quelques alternatives plus légères et plus appropriées dans un contexte de CI/CD : Kaniko, umoci, Buildah et img. Enfin nous jetterons un coup d’œil sur des plugins d’outils de build plus généraux avec Jib (Maven/Gradle) et Bazel.


Docker et BuildKit

Docker permet de construire des images de conteneur à l’aide de la commande  docker build , et depuis la release 18.09, il est possible d’utiliser  BuildKit  à cet effet.


BuildKit est un outil à part entière qui peut être utilisé seul (avec le CLI  buildctl  et le daemon  buildkitd ) mais qui est également  embarqué dans Docker  lui-même. Pour l’activer, rien de plus simple, il suffit de lancer son build avec la variable d’environnement  DOCKER_BUILDKIT=1 . Ne soyez pas surpris, par défaut les logs sont un peu différents du docker build “legacy”.


BuildKit apporte quelques fonctionnalités supplémentaires :

  • La parallélisation des builds multi-stage,  cet article  décrit assez bien cette fonctionnalité.
  • L’intégration des Docker secrets dans l’étape de build ( docs )

BuildKit peut aussi être utilisé avec les commandes   docker buildx , même si ces commandes sont encore considérées comme expérimentales.  Buildx  permet d’utiliser toutes les fonctionnalités de BuildKit, comme la possibilité créer des instances de builders séparées pour éviter le partage d’une seule et même instance pour tous les builds.


Maintenant que nous avons vu ce que permet de faire docker, intéressons nous aux alternatives, et pour commencer, Kaniko.


Kaniko

Kaniko  est un outil open source développé par Google pour construire des images à partir de Dockerfile et depuis un conteneur, sans avoir accès à un daemon Docker. Par conséquent, il permet de construire une image depuis un conteneur dans un cluster Kubernetes par exemple.


L’utilisation est plutôt simple puisque tout se passe dans le conteneur avec l’image officielle  gcr.io/kaniko-project/executor  et en une étape qui rassemble les étapes habituelles de pull, build et push.

Par défaut, Kaniko permet de construire une image depuis un dossier local, donc un dossier dans le conteneur ou un volume monté dans le conteneur. Mais il est aussi possible de construire une image depuis un blob storage (AWS S3, Azure Blob Storage, GCS Bucket) ou un dépôt git directement.


Il est aussi possible de  configurer du cache  pour accélérer les pipelines de CI/CD.

Cet outil est très facile à mettre en place dans un environnement de CI/CD comme  Gitlab CI  ou  Github Actions .


umoci

umoci  est l’implémentation de référence de l’ OCI image , il est conçu pour être minimal afin de pouvoir plus facilement s’intégrer dans un système plus gros. Par conséquent, il n’est pas forcément très “user-friendly” et manque des fonctionnalités des autres builder comme le push et pull vers une registry par exemple. Il permet également de construire des images en mode  rootless .


Il est mentionné ici à titre indicatif et puisqu’il s’agit de l’implémentation de référence. C’est aussi un bon moyen de comprendre les arcanes de la construction d’image sans avoir à lire le code source d’un autre builder.


Buildah

Buildah  est le cousin de  Podman , container engine dont nous avons parlé dans  l’épisode précédent . Comme Podman, il n’a pas besoin de daemon et peut fonctionner en mode rootless. C’est un outil développé par Red Hat qui permet, entre autres, de construire des images OCI de  façon classique à partir d’un manifeste Dockerfile , via la commande  buildah bud .


Mais la fonctionnalité la plus intéressante est de créer une image à partir d’un filesystem. Grosso modo il permet de créer une image à partir d’un dossier. Ce qui est très pratique pour créer des image from scratch, c’est-à-dire que contrairement à la majorité des images de nos jours, on peut créer une image distroless qui ne contient que le strict minimum, donc pas forcément d’outils systèmes comme un shell ou un package manager (e.g.  yum  ou  apt ), puisque que l’on peut utiliser le package manager de la machine hôte pour installer des packages dans le dossier qui servira comme base de la future image. Voici un exemple utilisant dnf pour installer bash dans un conteneur “nu”, tiré de la  documentation de buildah  :


# Crée le conteneur nu, “from scratch”, avec juste quelque métadonnées

$> newcontainer=$(buildah from scratch)

# Monte le conteneur dans un dossier

$> scratchmnt=$(buildah mount $newcontainer)

# Installe bash et coreutils dans le conteneur

$> dnf install --installroot $scratchmnt --releasever 33 bash coreutils --setopt install_weak_deps=false -y

# Démonte le conteneur

$> buildah unmount $newcontainer

# Commit le conteneur pour pour créer l’image fedora-basheco

$> buildah commit $newcontainer fedora-bashecho


umoci permet de créer des images OCI de la même façon mais l’expérience utilisateur n’est pas la même puisque buildah va abstraire tout ce qu’il peut pour rendre l’expérience la plus fluide possible, quand umoci se contentera du minimum.

L’intérêt de buildah par rapport à Kaniko dans un système de CI/CD est limité pour le cas d’usage classique à partir d’un Dockerfile. En revanche, buildah est un outil clairement intéressant pour la création d’image “from scratch”.


img

img  est un builder daemonless et rootless qui utilise une partie de BuildKit en interne, sans pour autant dépendre du daemon  buildkitd .

Comme BuildKit, il permet d’effectuer des étapes de builds en parallèle pour les multi-stage builds. Les options du CLI  img  sont similaires à celles du CLI  docker  pour les actions de build, pull et push. Du point de vue de l’utilisateur, l’expérience est donc tout à fait similaire à celle de Docker.


img est donc un bon candidat pour remplacer facilement docker dans un système de CI/CD déjà en place afin de bénéficier du mode rootless par exemple.


Jib et Bazel

Jib  et  Bazel  sont des cas particuliers de builders : se sont des plugins d’outils de build plus généraux. En effet, Jib est un plugin pour  Maven  et  Gradle , quand  Bazel  est un outil de build plus général qui dispose de son propre plugin pour construire des images Docker et OCI.

Ces deux outils permettent de construire des images OCI et Docker rootless et daemonless. Le gros point fort étant l’intégration avec l’outil de build dont ils sont le plugin. Il est donc très facile pour un utilisateur de Maven de construire une image Docker avec Jib.

Le deuxième avantage c’est l’utilisation d’images  distroless  par défaut, c’est-à-dire des images qui ne contiennent que le strict minimum : pas de shell ou de package manager.


Ces deux outils sont à privilégier pour les utilisateurs de Maven et Bazel. Ils permettent de construire des images très facilement et de façon complètement intégré au processus de build habituel.


Conclusion

Dans certains contextes, comme dans un environnement de CI/CD, un outil léger et dédié à la construction d’images Docker ou OCI est plus approprié que Docker ou Podman.


Nous avons vu que Docker et BuildKit permettent quelques améliorations par rapport à la construction de conteneur par défaut de Docker, notamment la construction en parallèle de multi-stage images, mais ils nécessitent des daemons.

umoci est intéressant pour comprendre la mécanique de construction d’une image, mais est un peu trop minimaliste pour être utilisé en mode standalone.


Kaniko permet de facilement construire une image de conteneur depuis un conteneur sans privilèges et daemonless.

img permet de construire des images avec la même syntaxe que le CLI Docker et en étant aussi efficace que BuildKit sans pour autant nécessiter de daemon et sans privilèges.


Enfin Jib (Maven/Gradle) et Bazel permettent d’intégrer la construction d’image dans un outils de build plus généraliste, et ainsi obtenir une intégration tout en douceur dans un système existant.

Nous avons vu que dans la catégorie des builders, Docker n’est clairement plus hégémonique non plus. Dans le prochain article nous ferons un tour d’horizon des runtime OCI.


En attendant le prochain épisode, n’hésitez pas à aller consulter nos préc édents articles sur Docker, les conteneurs et l’Open Container Initiative (OCI), les container engines : Podman, l’alternative à Docker mais aussi celui s ur   comment adopter une approche Kubernetes First  !


Ressources Agaetis

par Achats Agaetis 26 novembre 2025
Le contexte du projet : Groupe Aérospatial souhaitait optimiser le temps de contrôle dimensionnel des réservoirs de son lanceur spatial. Les méthodes traditionnelles, longues et peu satisfaisantes, ralentissaient la production et augmentaient les risques d’erreurs. Le besoin était de développer une application de contrôle qualité et dimensionnel intégrant de nouveaux moyens de mesure plus rapides et précis. L’objectifs : L’objectif principal était de concevoir et déployer une application installée sur un PC concentrateur capable de : lancer différents programmes de contrôle dimensionnel, intégrer des technologies de mesure avancées (profilomètres lasers, trackers laser), et améliorer la précision et la répétabilité des contrôles. Durée de mission : Mission de plusieurs mois, de la conception logicielle à la formation des équipes, en passant par l’intégration et les tests. Mise en œuvre : Agaetis a déployé une approche technique et collaborative : Développement de l’application : architecture logicielle adaptée aux besoins d’intégration industrielle. Collecte et traitement des données : intégration des mesures issues des machines à commande numérique, trackers laser et profilomètres. Optimisation des processus : automatisation des contrôles pour gagner en rapidité et réduire les erreurs. Accompagnement & formation : transfert de compétences aux équipes internes pour assurer la continuité. Résultats obtenus : Temps de contrôle réduit : amélioration notable de la productivité. Précision accrue : fiabilisation des mesures grâce à l’intégration de nouvelles technologies. Réduction des erreurs : contrôles plus rapides et répétables. Compétences préservées : maintien de la connaissance technique dans l’organisation. Facteurs clés de succès : Expertise technique d’Agaetis en développement industriel et IoT . Grande flexibilité dans la collaboration avec le client. Intégration fluide des données issues de différents équipements. Approche orientée impact et résultats mesurables. Et vous ? Vous vous interrogez sur : l’optimisation de vos processus de contrôle industriel, l’intégration de nouvelles technologies de mesure, ou la digitalisation de vos applications qualité ? 👉 Contactez nos experts pour moderniser vos contrôles industriels et accroître votre performance opérationnelle.
par David Walter 26 novembre 2025
Directus est-il l’avenir du Low Code ? 1. Comprendre le contexte : le rêve et les limites du Low Code L’essor des outils Low Code et No Code Les solutions no-code visent à simplifier complètement le processus, offrant des interfaces visuelles de type drag&drop, tandis que les plateformes low-code combinent cette simplicité avec la possibilité d’intégrer du code personnalisé pour des besoins plus avancés. Ces outils ont progressivement trouvé leur place dans les entreprises, permettant de créer des POC rapidement ou de moderniser des processus internes simples. Les premiers outils donnant accès à des fonctionnalités de développement simplifiées sont apparus dans les années 90 et début 2000. Mais par leur coût, ils étaient réservés à de grandes entreprises, mais avaient des possibilités limitées et restaient peu scalables. Les outils low code/no code comme nous les connaissons aujourd’hui se sont popularisés au début des années 2010 en réponse à la demande croissante des entreprises pour la digitalisation de processus métiers. Face à la forte demande de développeurs et à la complexité croissante des projets numériques, ces plateformes ont permis à des utilisateurs non techniques de créer des applications, automatiser des workflows et gérer des données sans écrire de code complexe. Quelques chiffres pour comprendre le phénomène Pour évaluer l’impact du no-code en France, examinons quelques statistiques significatives. Entre 2020 et 2025, le no-code est passé d'une tendance émergente à une solution adoptée par une majorité d'entreprises. Une étude réalisée par Hostinger révèle que 71 % des cadres et dirigeants français ont adopté des solutions no-code en 2025 , contre seulement 25 % en 2020. Cette progression illustre une mutation profonde des pratiques numériques. - No-code France : Cette communauté, initié par Contournement en 2019, est passée de 5 000 membres en 2020 à plus de 13 000 en 2025. Elle est la plus grande communauté francophone autour du No-code et regroupe professionnels, freelances et passionnés. - Le SFPN (Société Française des Professionnels du No-code) : Créée en 2020, son but est de fédérer et représenter le No-code au niveau national. Elle organise des événements tels que le Tour de France du No-code et le No-code Summit, et a vu ses adhérents tripler pour atteindre 1 500 membres actifs en 2025. 
Show More