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.
En 30 secondes
Section intitulée « En 30 secondes »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
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »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
Recommandation rapide
Section intitulée « Recommandation rapide »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 situation | Moteur recommandé | Pourquoi |
|---|---|---|
| Débutant / Apprentissage | Docker | Documentation abondante, écosystème mature |
| Développement local | Docker ou Podman | Docker Compose, intégration IDE |
| Sécurité prioritaire (rootless) | Podman | Sans daemon, rootless par défaut |
| Kubernetes en production | containerd | Runtime natif K8s, léger |
| Kubernetes minimaliste | CRI-O | Conçu uniquement pour K8s |
| Conteneurs système (VM légères) | LXC / Incus | OS complet dans un conteneur |
| Éviter la licence Docker Desktop | Podman | 100% open source (Docker Desktop payant >250 employés ou >10M$) |
Ce que vous installez réellement
Section intitulée « Ce que vous installez réellement »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.
Sur Linux : installation native, daemonless par défaut.
Sur macOS/Windows : nécessite une VM via podman machine (similaire à Docker Desktop, mais gratuit).
Runtimes système : installés sur les nodes Kubernetes, rarement utilisés directement en développement local.
Pour une CLI conviviale avec containerd, installez nerdctl.
Linux uniquement : conteneurs système, pas de support Windows/macOS.
Qu’est-ce qu’un moteur de conteneurs ?
Section intitulée « Qu’est-ce qu’un moteur de conteneurs ? »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 :
| Terme | Exemples | Rôle |
|---|---|---|
| Engine (moteur) | Docker, Podman | Build + run + UX complète |
| Runtime | containerd, CRI-O | Exécution uniquement, orienté CRI/Kubernetes |
| Build tools | BuildKit, Buildah, Kaniko | Construction d’images (voir guide build) |
| System containers | LXC, Incus | OS complet dans un conteneur (logique « VM légère ») |
L’analogie du transport maritime
Section intitulée « L’analogie du transport maritime »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é.
Ce que fait un moteur de conteneurs
Section intitulée « Ce que fait un moteur de conteneurs »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 :
| Fonction | Description |
|---|---|
| Créer des images | Construire des packages contenant application + dépendances |
| Exécuter des conteneurs | Lancer des instances isolées à partir des images |
| Gérer l’isolation | Séparer CPU, mémoire, réseau, filesystem entre conteneurs |
| Orchestrer le réseau | Permettre aux conteneurs de communiquer entre eux |
| Persister les données | Gérer les volumes pour conserver les données |
Technologies Linux sous-jacentes
Section intitulée « Technologies Linux sous-jacentes »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.
Les 6 moteurs de conteneurs en détail
Section intitulée « Les 6 moteurs de conteneurs en détail »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.
Docker — Le standard de facto
Section intitulée « Docker — Le standard de facto »
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
Podman — Sécurité et compatibilité
Section intitulée « Podman — Sécurité et compatibilité »
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 builds’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 composedé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
ctrbasique) - 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
CRI-O — Kubernetes only
Section intitulée « CRI-O — Kubernetes only »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
LXC — Conteneurs système
Section intitulée « LXC — Conteneurs système »
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
Incus — LXC avec des super-pouvoirs
Section intitulée « Incus — LXC avec des super-pouvoirs »
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
Tableau comparatif détaillé
Section intitulée « Tableau comparatif détaillé »| Critère | Docker | Podman | containerd | CRI-O | LXC | Incus |
|---|---|---|---|---|---|---|
| Type de conteneurs | Applicatifs | Applicatifs | Applicatifs | Applicatifs | Système | Système + VM |
| Architecture | Daemon (dockerd) | Sans daemon (Linux)* | Daemon | Daemon | Bas niveau | Daemon + API |
| Unprivileged/Rootless | Optionnel | Par défaut (Linux) | Selon setup | Selon 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 Compose | ✅ docker compose | ⚠️ Selon provider | ✅ nerdctl 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 |
| Licence | Apache 2.0 (Desktop payant)** | Apache 2.0 | Apache 2.0 | Apache 2.0 | LGPL | Apache 2.0 |
| Cas d’usage principal | Développement, CI/CD | Sécurité, Red Hat | Kubernetes | Kubernetes | VM légères | Infra hybride |
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 :
| Outil | Type | Moteurs supportés | Idéal pour |
|---|---|---|---|
| Portainer CE | Interface web | Docker, Swarm, K8s | Équipes, gestion multi-environnements |
| LazyDocker | TUI (terminal) | Docker | Développeurs CLI qui veulent du visuel |
| Podman Desktop | Application desktop | Podman, Docker, K8s | Développeurs sur poste local |
| Docker Desktop | Application desktop | Docker | Windows/macOS (licence commerciale) |
Arbre de décision
Section intitulée « Arbre de décision »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
- Installez Docker
- Suivez le guide CLI Docker
- Apprenez Docker Compose
Quand vous serez à l’aise, vous pourrez explorer Podman ou containerd.
Recommandation : Podman
- Installez Podman
- Profitez du mode rootless par défaut (Linux)
- Utilisez
podman composeoupodman-composepour vos stacks (compatibilité selon provider)
Bonus : les commandes sont identiques à Docker — pas de réapprentissage.
Recommandation : containerd (ou CRI-O)
- containerd pour la polyvalence
- CRI-O si vous êtes sur OpenShift ou voulez le minimum
En développement local, gardez Docker ou Podman pour le confort.
Checklist avant de choisir
Section intitulée « Checklist avant de choisir »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.
À retenir
Section intitulée « À retenir »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.
-
Docker reste le standard pour débuter et pour le développement local — écosystème incomparable.
-
Podman = Docker + sécurité : rootless par défaut (Linux), sans daemon, commandes compatibles.
-
containerd est le runtime Kubernetes : léger, performant, mais sans interface conviviale. Utilisez nerdctl pour une CLI Docker-compatible.
-
LXC/Incus = conteneurs système : quand vous avez besoin d’un OS complet dans un conteneur, avec support unprivileged.
-
Les images sont compatibles : grâce au standard OCI, une image Docker fonctionne avec Podman, containerd, CRI-O.
-
La migration est possible : commencez par Docker, migrez vers Podman ou containerd quand le besoin se présente.
-
Les interfaces graphiques existent : Portainer, LazyDocker, Podman Desktop selon vos préférences.
Prochaines étapes
Section intitulée « Prochaines étapes »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.
FAQ — Questions fréquentes
Section intitulée « FAQ — Questions fréquentes »Compatibilité CLI
# Les commandes sont identiques
podman run -d nginx
podman ps
podman build -t mon-image .
# Alias pour migration transparente
alias docker=podman
Ce qui fonctionne directement
| Élément | Compatibilité |
|---|---|
| Images Docker Hub | ✅ Complète |
| Dockerfile | ✅ (appelé Containerfile) |
| docker-compose.yml | ✅ Via podman-compose |
| Volumes, réseaux | ✅ Syntaxe identique |
| Variables d'env | ✅ Identique |
Différences mineures
- Podman utilise des registres multiples par défaut (pas seulement Docker Hub)
- Le socket est différent (
/run/podman/podman.sockvs/var/run/docker.sock) - Certaines options avancées Docker peuvent différer
Pourquoi ça fonctionne
Docker et containerd utilisent le même format d'image défini par l'Open Container Initiative :# Avec Docker
docker build -t mon-app:1.0 .
docker push registry.example.com/mon-app:1.0
# Avec containerd (via ctr ou nerdctl)
ctr images pull registry.example.com/mon-app:1.0
nerdctl run registry.example.com/mon-app:1.0
Standard OCI
| Spécification | Définit |
|---|---|
| OCI Image Format | Structure des images (layers, manifest) |
| OCI Runtime Spec | Comment exécuter un conteneur |
| OCI Distribution Spec | Comment pousser/puller des images |
Pourquoi ce changement ?
┌─────────────────────────────────────────────┐
│ Kubernetes │
│ ┌─────────┐ ┌─────────┐ │
│ │ kubelet │────▶│ CRI │ (interface) │
│ └─────────┘ └────┬────┘ │
│ │ │
│ ┌─────────────┼─────────────┐ │
│ ▼ ▼ ▼ │
│ containerd CRI-O ❌ Docker │
│ (natif CRI) (natif CRI) (via shim) │
└─────────────────────────────────────────────┘
Docker n'implémente pas nativement la CRI (Container Runtime Interface). Kubernetes devait maintenir un adaptateur (dockershim) pour traduire les appels CRI vers l'API Docker.Ce que ça change
| Aspect | Impact |
|---|---|
| Images Docker | ✅ Fonctionnent toujours (format OCI) |
| Dockerfile | ✅ Aucun changement |
| docker build | ✅ Continue de fonctionner |
| Runtime K8s | ⚠️ Utiliser containerd ou CRI-O |
En pratique
Vos images Docker fonctionnent sans modification. Seul le runtime sur les nœuds Kubernetes change.→ FAQ officielle Kubernetes sur dockershimUnprivileged vs Rootless
| Mode | Mécanisme | Résultat |
|---|---|---|
| Rootless (Docker/Podman) | Le daemon tourne sans root | Conteneurs sans privilèges hôte |
| Unprivileged (LXC/Incus) | User namespaces + idmap | Root conteneur = UID non privilégié hôte |
Comment ça fonctionne dans Incus
# Créer un conteneur (unprivileged par défaut)
incus launch images:ubuntu/22.04 mon-conteneur
# Vérifier le mapping UID
incus config show mon-conteneur | grep -A5 "idmap"
# raw.idmap: both 0 100000 65536
# → root (0) dans le conteneur = UID 100000 sur l'hôte
Sécurité
Même si un attaquant obtient root dans le conteneur Incus, il n'a que les droits de l'utilisateur 100000 sur l'hôte → pas d'escalade de privilèges.→ Documentation sécurité IncusQui peut l'utiliser gratuitement ?
| Usage | Gratuit ? |
|---|---|
| Usage personnel | ✅ Oui |
| Éducation | ✅ Oui |
| Projets open source | ✅ Oui |
| Petites entreprises | ✅ Oui* |
| Grandes entreprises | ❌ Payant |
Tarifs entreprise (2024)
- Pro : ~5$/mois/utilisateur
- Team : ~9$/mois/utilisateur
- Business : ~24$/mois/utilisateur
Alternatives gratuites
# Sur macOS/Windows
# Option 1 : Colima (Docker Engine dans une VM Lima)
brew install colima docker
colima start
# Option 2 : Podman + Podman Desktop
brew install podman
podman machine init && podman machine start
→ Licence Docker Desktop officiellePourquoi nerdctl ?
containerd est un excellent runtime, mais sa CLI native (ctr) est basique :# CLI ctr (complexe)
ctr images pull docker.io/library/nginx:latest
ctr run docker.io/library/nginx:latest nginx-ctr
# CLI nerdctl (familière)
nerdctl pull nginx
nerdctl run -d -p 80:80 nginx
Fonctionnalités supportées
| Commande | Support nerdctl |
|---|---|
run, exec, logs |
✅ |
build (Dockerfile) |
✅ (via BuildKit) |
compose up/down |
✅ |
| Volumes, réseaux | ✅ |
| Multi-plateforme | ✅ (mieux que Docker !) |
Installation
# Linux
wget https://github.com/containerd/nerdctl/releases/latest/download/nerdctl-full-linux-amd64.tar.gz
tar -xzf nerdctl-full-linux-amd64.tar.gz -C /usr/local
# Alias optionnel
alias docker=nerdctl
Quand utiliser nerdctl ?
- Vous avez containerd (Kubernetes) et voulez une CLI conviviale
- Vous voulez éviter Docker pour des raisons de licence
- Vous avez besoin de builds multi-plateformes avancés
Conteneur applicatif (Docker, Podman)
# Un processus = un conteneur
FROM node:20-alpine
COPY app.js .
CMD ["node", "app.js"] # UN seul processus
- Exécute un processus principal
- Pas de système d'init (pas de systemd)
- Philosophie microservices
- Éphémère par nature
Conteneur système (LXC, Incus)
# Un OS complet dans le conteneur
incus launch images:ubuntu/22.04 ma-vm-legere
incus exec ma-vm-legere -- systemctl status
# → systemd tourne, services multiples possibles
- Exécute un OS complet (init, services, utilisateurs)
- Ressemble à une VM mais partage le kernel
- Idéal pour migrer des workloads VM
- Persistent par nature
Comparaison
| Aspect | Applicatif | Système |
|---|---|---|
| Processus | Un seul | Multiples (init) |
| systemd | Non | Oui |
| SSH dans le conteneur | Anti-pattern | Normal |
| Cas d'usage | Microservices, CI/CD | Migration VM, serveurs classiques |
| Outils | Docker, Podman | LXC, Incus |
docker-compose.yml avec Podman de plusieurs façons.Option 1 : podman-compose
# Installation
pip install podman-compose
# Utilisation (syntaxe identique)
podman-compose up -d
podman-compose logs -f
podman-compose down
Option 2 : Socket compatible Docker
# Activer le socket Podman compatible Docker
podman system service --time=0 &
export DOCKER_HOST=unix:///run/user/$(id -u)/podman/podman.sock
# Puis utiliser docker-compose normalement
docker-compose up -d
Option 3 : Podman 4.x intégré
# Podman 4+ supporte compose nativement
podman compose up -d
Compatibilité
| Fonctionnalité | Support |
|---|---|
| services, volumes, networks | ✅ |
| depends_on | ✅ |
| build | ✅ |
| healthcheck | ✅ |
| deploy (swarm) | ⚠️ Partiel |