Aller au contenu
Conteneurs & Orchestration high

Moteurs de conteneurs : guide complet pour choisir Docker, Podman ou LXC

21 min de lecture

Vous devez choisir un moteur de conteneurs mais vous êtes perdu entre Docker, Podman, containerd et LXC ? Cette page vous guide vers le bon choix en 5 minutes. Docker reste le standard pour débuter, Podman pour la sécurité rootless, containerd pour Kubernetes, et LXC/Incus pour les conteneurs système.

Que vous soyez développeur, administrateur système ou architecte, ce guide comparatif vous aide à identifier le moteur adapté à votre contexte et vous oriente vers les ressources détaillées.

Si vous n’avez que quelques secondes, retenez simplement ceci : chaque moteur répond à un besoin spécifique. Voici le résumé ultra-rapide pour vous orienter immédiatement :

  • Docker : meilleur choix par défaut (dev, docs, Compose)
  • Podman : rootless/daemonless sur Linux + compatibilité Docker
  • containerd : runtime CRI-compatible (Kubernetes)
  • CRI-O : minimal « K8s only »
  • LXC/Incus : conteneurs système (OS complet), unprivileged/userns

Cette page est conçue comme un hub de navigation : elle vous donne les clés pour choisir, puis vous oriente vers les guides détaillés. Vous allez découvrir :

  • Les 6 moteurs comparés : Docker, Podman, containerd, CRI-O, LXC et Incus — leurs forces et faiblesses, avec les cas d’usage où chacun excelle
  • Recommandation par cas : Développement local, production, Kubernetes, sécurité — quel moteur pour quel usage, avec des critères concrets pour trancher
  • Critères de décision : Architecture, sécurité, écosystème, courbe d’apprentissage — les questions à se poser avant de choisir
  • Outils complémentaires : Portainer, LazyDocker, Podman Desktop — les interfaces graphiques pour piloter vos conteneurs sans ligne de commande

Vous êtes pressé et voulez une réponse immédiate ? Ce tableau vous oriente directement vers le moteur le plus adapté à votre situation. Chaque ligne correspond à un cas d’usage courant — identifiez le vôtre et vous saurez immédiatement par où commencer.

Votre situationMoteur recommandéPourquoi
Débutant / ApprentissageDockerDocumentation abondante, écosystème mature
Développement localDocker ou PodmanDocker Compose, intégration IDE
Sécurité prioritaire (rootless)PodmanSans daemon, rootless par défaut
Kubernetes en productioncontainerdRuntime natif K8s, léger
Kubernetes minimalisteCRI-OConçu uniquement pour K8s
Conteneurs système (VM légères)LXC / IncusOS complet dans un conteneur
Éviter la licence Docker DesktopPodman100% open source (Docker Desktop payant >250 employés ou >10M$)

Une source fréquente de confusion : Docker sur Linux ≠ Docker sur macOS/Windows. Cette distinction est cruciale pour comprendre les performances, les contraintes de licence et l’architecture réelle de votre environnement. Voici ce qui s’installe concrètement selon votre système d’exploitation :

Sur Linux : vous installez Docker Engine (daemon + CLI), c’est tout.

Sur macOS/Windows : vous installez Docker Desktop = application + VM + intégrations IDE + Kubernetes optionnel.

⚠️ Docker Desktop est payant au-delà du free tier (<250 employés ET <10M$ revenus). Docker Engine Linux reste 100% open source.

Un moteur de conteneurs (ou container engine) est le logiciel qui permet de créer, exécuter et gérer des conteneurs. C’est la fondation sur laquelle repose toute votre infrastructure conteneurisée.

Mais attention : le terme “moteur” est souvent utilisé de manière imprécise. Docker, containerd, LXC… ces outils ne font pas tous la même chose, même s’ils tournent tous autour des conteneurs. Clarifier le vocabulaire dès maintenant vous évitera des confusions plus tard.

Moteur vs runtime vs build tools vs conteneur système

Section intitulée « Moteur vs runtime vs build tools vs conteneur système »

Cette page compare des outils de natures différentes — c’est volontaire, car c’est ce que les équipes comparent réellement sur le terrain. Voici le vocabulaire précis pour éviter les amalgames :

TermeExemplesRôle
Engine (moteur)Docker, PodmanBuild + run + UX complète
Runtimecontainerd, CRI-OExécution uniquement, orienté CRI/Kubernetes
Build toolsBuildKit, Buildah, KanikoConstruction d’images (voir guide build)
System containersLXC, IncusOS complet dans un conteneur (logique « VM légère »)

Pour bien comprendre l’intérêt des conteneurs logiciels, il faut revenir à leur origine conceptuelle. Le nom « conteneur » n’est pas une métaphore vague — il vient directement du transport maritime, et cette analogie éclaire parfaitement leur valeur. Avant l’invention du conteneur standardisé dans les années 1950, charger un navire prenait des jours : chaque colis avait une forme différente, nécessitait une manutention spécifique.

Le conteneur maritime a tout changé : une boîte standardisée qui se charge de la même façon à Shanghai, Rotterdam ou Los Angeles. Peu importe ce qu’il y a dedans — le transport est identique.

Les conteneurs logiciels fonctionnent pareil : ils standardisent le déploiement d’applications. Peu importe le langage, les dépendances ou la configuration — si ça tourne dans un conteneur, ça tourne partout où le moteur est installé.

Maintenant que vous comprenez le concept, voyons concrètement ce qu’un moteur de conteneurs fait au quotidien. Voici les 5 fonctions essentielles que tous les moteurs assurent, avec plus ou moins de sophistication selon l’outil :

FonctionDescription
Créer des imagesConstruire des packages contenant application + dépendances
Exécuter des conteneursLancer des instances isolées à partir des images
Gérer l’isolationSéparer CPU, mémoire, réseau, filesystem entre conteneurs
Orchestrer le réseauPermettre aux conteneurs de communiquer entre eux
Persister les donnéesGérer les volumes pour conserver les données

Voici un point crucial : tous les moteurs de conteneurs utilisent les mêmes fondations Linux. Que vous choisissiez Docker, Podman, containerd ou LXC, vous exploitez les mêmes briques bas niveau du noyau. Ce qui change, c’est la manière dont ces briques sont orchestrées et présentées à l’utilisateur.

Les trois primitives essentielles :

  • Namespaces : isolent ce que le conteneur voit (processus, réseau, utilisateurs, filesystem)
  • Cgroups : limitent ce que le conteneur utilise (CPU, mémoire, I/O)
  • Union filesystems : permettent le système de couches (layers) des images

La différence entre les moteurs réside dans l’architecture, l’interface utilisateur et les fonctionnalités supplémentaires.

Maintenant que vous avez le contexte général, plongeons dans le détail de chaque moteur. Pour chacun, vous trouverez : ce qu’il fait bien, ses limites, et quand le choisir. Cette section vous donne les informations concrètes pour décider en connaissance de cause.

logo docker

Docker a démocratisé les conteneurs en 2013. Aujourd’hui encore, c’est le moteur le plus utilisé, avec l’écosystème le plus riche.

Points forts :

  • Documentation exhaustive et communauté massive
  • Docker Hub : des millions d’images prêtes à l’emploi
  • Docker Compose pour les applications multi-conteneurs
  • Intégration native dans tous les IDE et outils CI/CD

Points faibles :

  • Daemon root par défaut (mode rootless possible mais pas le chemin standard)
  • Appartenance au groupe docker = privilèges root-like (risque sécurité)
  • Docker Desktop payant au-delà du free tier (<250 employés ET <10M$ revenus)
  • Plus lourd que les alternatives minimalistes

Quand choisir Docker :

  • Apprentissage des conteneurs
  • Développement local
  • Équipes qui ont besoin de documentation abondante

logo podman

Si Docker est le standard, Podman est l’alternative qui monte. Créé par Red Hat, Podman corrige les principaux reproches adressés à Docker : architecture daemon root, surface d’attaque, contrôle fin. Et le meilleur ? Il parle exactement la même langue que Docker — vous pouvez souvent remplacer docker par podman dans vos commandes.

Points forts :

  • Rootless par défaut : pas besoin de privilèges root (sur Linux)
  • Sans daemon sur Linux : chaque commande est un processus isolé (sur macOS/Windows, Podman utilise une VM via podman machine)
  • Compatible Docker : mêmes commandes, mêmes images, migration facile
  • Build intégré : podman build s’appuie sur Buildah
  • Support natif des pods (concept Kubernetes)
  • 100% open source, pas de licence commerciale

Points faibles :

  • Écosystème moins mature que Docker
  • Compose : podman compose délègue à un provider externe (docker-compose, podman-compose), compatibilité partielle selon les stacks
  • Sur macOS/Windows : nécessite une VM (podman machine), pas de mode natif
  • Moins de documentation pour les débutants

Quand choisir Podman :

  • Sécurité prioritaire (environnements réglementés)
  • Éviter la licence Docker Desktop
  • Préparation à Kubernetes (concept de pods)

Quel runtime pour Kubernetes : containerd ou CRI-O ?

Section intitulée « Quel runtime pour Kubernetes : containerd ou CRI-O ? »

On change de catégorie : Docker et Podman sont des moteurs complets (build + run + UX). containerd est un runtime : il fait uniquement l’exécution, pas le build, avec une interface minimaliste. C’est le composant utilisé en interne par Docker, et c’est devenu le runtime par défaut de Kubernetes.

Points forts :

  • Léger et performant : fait uniquement l’exécution
  • Runtime officiel Kubernetes depuis la suppression de dockershim
  • Interface CRI native (Container Runtime Interface)
  • Maintenu par la CNCF

Points faibles :

  • Pas d’interface utilisateur conviviale (CLI ctr basique)
  • Pas de workflow de build clé en main comme Docker/Podman (utiliser nerdctl, BuildKit ou Buildah)
  • Destiné aux administrateurs expérimentés

Quand choisir containerd :

  • Clusters Kubernetes en production
  • Besoin d’un runtime minimal
  • Infrastructure cloud-native

Si containerd peut être utilisé seul (avec nerdctl par exemple), CRI-O va encore plus loin dans le minimalisme : il est conçu exclusivement pour Kubernetes, rien d’autre. Contrairement à containerd (qui peut tourner en standalone), CRI-O n’a de sens qu’intégré à un cluster K8s.

Points forts :

  • Ultra-léger : fait uniquement ce que Kubernetes demande
  • Moins de surface d’attaque que containerd
  • Adopté par OpenShift (Red Hat)

Points faibles :

  • Inutilisable hors Kubernetes
  • Moins polyvalent que containerd

Quand choisir CRI-O :

  • Clusters OpenShift
  • Kubernetes avec exigences de sécurité strictes

logo lxc

On change à nouveau de monde : LXC (Linux Containers) ne crée pas des conteneurs applicatifs comme Docker/Podman, mais des conteneurs système qui ressemblent à des machines virtuelles légères. Là où Docker lance un processus (votre app), LXC lance un OS complet (init, services, shell…).

C’est la technologie de conteneurisation originelle de Linux, antérieure à Docker.

Points forts :

  • Conteneurs système complets : init, services, comme une VM
  • Conteneurs non privilégiés (unprivileged) via user namespaces — le root dans le conteneur est mappé sur un UID non privilégié côté hôte
  • Contrôle fin des ressources (cgroups avancés)
  • Idéal pour migrer des workloads VM vers conteneurs

Points faibles :

  • Plus bas niveau que Docker/Podman
  • Pas de Dockerfile, pas de layers
  • Courbe d’apprentissage plus raide

Quand choisir LXC :

  • Virtualisation légère de systèmes complets
  • Migration depuis des VM
  • Besoin de plusieurs services dans un même conteneur

logo incus

Incus est à LXC ce que Podman est à Docker : une surcouche moderne qui corrige les limites et ajoute des fonctionnalités avancées. C’est un fork de LXD (créé par Canonical), maintenu par Stéphane Graber (le créateur original de LXC/LXD). Il ajoute une couche de gestion avancée au-dessus de LXC, avec une API REST complète et des capacités de clustering.

Points forts :

  • Gère conteneurs ET machines virtuelles (via QEMU)
  • Conteneurs non privilégiés par défaut (user namespaces / idmap)
  • Clustering natif pour la haute disponibilité
  • API REST complète
  • Images prêtes à l’emploi (Ubuntu, Debian, Alpine…)

Points faibles :

  • Écosystème plus petit que Docker
  • Moins adapté aux conteneurs applicatifs

Quand choisir Incus :

  • Infrastructure unifiée conteneurs + VM
  • Alternative légère à Proxmox
  • Conteneurs système en production
CritèreDockerPodmancontainerdCRI-OLXCIncus
Type de conteneursApplicatifsApplicatifsApplicatifsApplicatifsSystèmeSystème + VM
ArchitectureDaemon (dockerd)Sans daemon (Linux)*DaemonDaemonBas niveauDaemon + API
Unprivileged/RootlessOptionnelPar défaut (Linux)Selon setupSelon setup✅ Unprivileged✅ Par défaut
CLI conviviale✅ Excellente✅ Compatible Docker⚠️ Basique (ctr)❌ Via kubectl⚠️ Technique✅ Bonne
Build d’images✅ Dockerfile✅ Containerfile❌ Externe (BuildKit)❌ Non❌ Non❌ Non
Docker Composedocker compose⚠️ Selon providernerdctl compose❌ Non❌ Non❌ Non
Support Kubernetes⚠️ Via containerd✅ Pods natifs✅ Runtime officiel✅ Conçu pour K8s❌ Non❌ Non
Documentation✅ Abondante✅ Bonne⚠️ Technique⚠️ Technique⚠️ Limitée⚠️ Correcte
LicenceApache 2.0 (Desktop payant)**Apache 2.0Apache 2.0Apache 2.0LGPLApache 2.0
Cas d’usage principalDéveloppement, CI/CDSécurité, Red HatKubernetesKubernetesVM légèresInfra hybride
* Sur macOS/Windows, Podman utilise une VM (podman machine).
** Docker Desktop est payant pour les entreprises > 250 employés ou > 10M$ de revenus.

Outils complémentaires : les interfaces graphiques

Section intitulée « Outils complémentaires : les interfaces graphiques »

La ligne de commande reste l’outil de référence pour les conteneurs, mais elle n’est pas obligatoire. Si vous préférez une interface visuelle, si vous gérez des dizaines de conteneurs, ou si vous voulez embarquer des collègues moins techniques, ces outils graphiques offrent une expérience complète sans sacrifier la puissance.

Voici les 3 interfaces graphiques les plus populaires, chacune avec son positionnement :

OutilTypeMoteurs supportésIdéal pour
Portainer CEInterface webDocker, Swarm, K8sÉquipes, gestion multi-environnements
LazyDockerTUI (terminal)DockerDéveloppeurs CLI qui veulent du visuel
Podman DesktopApplication desktopPodman, Docker, K8sDéveloppeurs sur poste local
Docker DesktopApplication desktopDockerWindows/macOS (licence commerciale)

Vous avez maintenant toutes les informations. Cet arbre de décision vous guide pas à pas selon votre profil et vos contraintes. Sélectionnez l’onglet qui vous correspond le mieux, et suivez les étapes recommandées pour démarrer rapidement.

Recommandation : Docker

  1. Installez Docker
  2. Suivez le guide CLI Docker
  3. Apprenez Docker Compose

Quand vous serez à l’aise, vous pourrez explorer Podman ou containerd.

Avant de vous lancer, prenez 2 minutes pour vérifier ces points critiques. Ce sont les pièges classiques dans lesquels tombent même les équipes expérimentées. Cette checklist vous évite les mauvaises surprises en production, les incompréhensions avec Kubernetes, ou les problèmes de licence inutiles.

Vous êtes arrivé au bout de ce guide. Avant de passer à la pratique, voici les 7 points essentiels à retenir — ce sont les fondamentaux qui vous permettront de prendre les bonnes décisions, maintenant et dans 6 mois quand vos besoins évolueront.

  1. Docker reste le standard pour débuter et pour le développement local — écosystème incomparable.

  2. Podman = Docker + sécurité : rootless par défaut (Linux), sans daemon, commandes compatibles.

  3. containerd est le runtime Kubernetes : léger, performant, mais sans interface conviviale. Utilisez nerdctl pour une CLI Docker-compatible.

  4. LXC/Incus = conteneurs système : quand vous avez besoin d’un OS complet dans un conteneur, avec support unprivileged.

  5. Les images sont compatibles : grâce au standard OCI, une image Docker fonctionne avec Podman, containerd, CRI-O.

  6. La migration est possible : commencez par Docker, migrez vers Podman ou containerd quand le besoin se présente.

  7. Les interfaces graphiques existent : Portainer, LazyDocker, Podman Desktop selon vos préférences.

Vous savez maintenant quel moteur choisir. Passez à la pratique avec ces guides détaillés. Chacun couvre l’installation, la configuration, les commandes essentielles et les bonnes pratiques pour être opérationnel rapidement.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.