Docker tourne dans une microVM depuis 2016
On me ressort régulièrement l’idée que les microVMs seraient la nouveauté qui viendrait enfin concurrencer les conteneurs, comme si les deux s’opposaient et qu’il fallait choisir un camp. Un billet lu sur dave.recoil.org , écrit par quelqu’un de l’écosystème qui a construit Docker Desktop, remet les pendules à l’heure et il tombe exactement là où je situe le sujet.
La thèse tient en une phrase : Docker Desktop fait tourner les conteneurs dans une VM minimale depuis 2016, bâtie sur les briques de MirageOS. Les repères sont vérifiables, rachat d’Unikernel Systems en janvier 2016, Docker for Mac annoncé en mars et disponible en juillet de la même année, un VMM en espace utilisateur (hyperkit à l’origine, Docker VMM aujourd’hui), une pile réseau en espace utilisateur avec vpnkit et un noyau plus un rootfs taillés via LinuxKit. Autrement dit, le conteneur qu’un développeur lance sur son Mac ou son Windows n’a jamais touché le noyau de l’hôte, il vit dans une microVM et cela fait bientôt dix ans que ça dure.
C’est précisément le faux débat que je dénonce ailleurs. Le conteneur et la VM ne sont pas deux religions concurrentes, ce sont deux niveaux d’isolation qu’on empile selon la surface qu’on accepte d’exposer, ce que je détaille côté frontière conteneur/jail dans Docker contre les jails et côté microVM pure dans l’isolation Firecracker . Le rootless, qu’on présente parfois comme un correctif tardif, tombe en réalité du design, puisque le noyau Linux qui tourne dans la VM n’est pas de confiance pour l’hôte et que l’interface entre les deux reste petite et auditable.
Ce n’est d’ailleurs pas une vue de l’esprit, c’est à quoi ressemblait mon infra typique jusqu’en 2024. Des clusters bare-metal d’hyperviseurs, Proxmox ou ESXi selon les contextes, sur lesquels tournaient des VM aux rôles bien séparés, certaines purement Docker, en rootless ou non selon ce qu’elles hébergeaient, d’autres en k0s, d’autres encore en Podman , orchestrées par Quadlet et systemd. Le conteneur n’y a jamais remplacé la VM, il vivait dedans.
Et la boucle se referme sur l’actualité, Docker Sandboxes reprend la même fondation pour donner une microVM par session d’agent de code. La microVM n’était donc pas le futur des conteneurs, elle en était déjà le socle sur le poste de millions de développeurs, simplement on ne mettait pas le mot dessus.
Source : Docker has always used microVMs , dave.recoil.org.
[edit: 2026] L’implémentation Ansible de tout ceci: les rôles docker , podman et quadlet .