
Incus et Docker ne font pas le même métier. Docker lance des conteneurs applicatifs (un processus, une image, jetable) pour empaqueter et distribuer une application. Incus lance des conteneurs système (une distribution Linux complète, persistante) et des machines virtuelles, façon machine légère. Ce guide explique la différence fondamentale, la pose dans un tableau clair, et indique quel outil choisir selon le besoin. Pour qui hésite entre les deux ou vient de Docker.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- La différence fondamentale : conteneur applicatif vs conteneur système.
- Un tableau comparatif Incus / Docker.
- Quel outil choisir selon votre cas d'usage.
- Que Incus sait aussi lancer des images Docker (OCI).
La différence fondamentale
Section intitulée « La différence fondamentale »Tout se joue sur ce que contient un conteneur.
Un conteneur Docker exécute un seul processus : votre application (un serveur web, une API, une base de données). L'image est construite en couches, le conteneur est éphémère (on le jette et on le recrée), et il ne contient que le strict nécessaire pour faire tourner ce processus. Pas d'init, pas de services système, pas de SSH.
Un conteneur Incus exécute un système complet : une distribution Linux avec son init (systemd, openrc), ses services, ses utilisateurs, ses logs. Il est persistant : on s'y connecte, on l'administre, on le sauvegarde par snapshot, comme une petite machine. C'est la différence entre « emballer une application » et « provisionner une machine ».
Tableau comparatif
Section intitulée « Tableau comparatif »| Critère | Docker | Incus |
|---|---|---|
| Type de conteneur | applicatif (1 processus) | système (distribution complète) |
| Machines virtuelles | non | oui (QEMU/KVM) |
| Durée de vie | éphémère | persistante |
| Image | en couches (Dockerfile) | distribution (remote images:) |
| Accès | docker exec, logs | incus shell, comme une machine |
| Init / services | non (1 process) | oui (systemd, openrc) |
| Cas typique | déployer une app | provisionner un serveur Linux |
| Orchestration | Kubernetes, Swarm | clustering Incus natif |
Quel outil choisir
Section intitulée « Quel outil choisir »Le bon réflexe : partir du besoin, pas de l'outil.
Choisissez Docker (ou un autre moteur applicatif) quand vous voulez empaqueter et distribuer une application : un microservice, une stack web reproductible, un build de CI/CD. L'écosystème (Docker Hub, Compose, Kubernetes) est taillé pour ça.
Choisissez Incus quand vous voulez une machine Linux : un serveur de test, un environnement de développement complet, un homelab, une VM pour un autre noyau ou Windows. Vous gérez l'instance comme un système, avec snapshots et API, sans la lourdeur d'un hyperviseur complet comme Proxmox.
Incus sait aussi lancer des images Docker
Section intitulée « Incus sait aussi lancer des images Docker »La frontière n'est pas étanche : depuis la version 6.3, Incus peut lancer des images OCI (le format de Docker) en plus de ses conteneurs système. Une image nginx de Docker Hub démarre alors comme un conteneur applicatif dans Incus, marqué CONTAINER (APP) :
incus remote add docker https://docker.io --protocol ociincus launch docker:nginx webCela permet d'exécuter de l'applicatif sans installer Docker, sur la même plateforme que vos conteneurs système et vos VMs. Le détail dans le guide lancer des conteneurs OCI avec Incus.
Peut-on remplacer Docker par Incus
Section intitulée « Peut-on remplacer Docker par Incus »En partie. Pour un homelab ou un poste de développement, lancer ses quelques services applicatifs en OCI dans Incus évite d'installer Docker en plus, et tout se gère au même endroit. En revanche, pour un usage applicatif intensif (build d'images via Dockerfile, Compose multi-services, intégration Kubernetes), l'écosystème Docker reste plus complet et mieux outillé. Incus complète Docker plus qu'il ne le remplace totalement.
À retenir
Section intitulée « À retenir »- Docker = conteneurs applicatifs (1 processus, éphémère) pour empaqueter une application.
- Incus = conteneurs système (distribution complète, persistante) et VMs pour provisionner des machines.
- On choisit selon le besoin : emballer une app (Docker) ou provisionner une machine (Incus).
- Depuis la 6.3, Incus lance aussi des images OCI (
docker:), marquéesCONTAINER (APP). - Les deux sont souvent complémentaires, pas concurrents.
FAQ : questions fréquentes sur Incus vs Docker
Section intitulée « FAQ : questions fréquentes sur Incus vs Docker »Conteneur applicatif contre conteneur système
- Docker : un conteneur applicatif, soit un processus (votre app), une image en couches, éphémère ;
- Incus : un conteneur système, soit une distribution complète (init, services), persistante, administrée comme une machine.
Partez du besoin
- Docker : pour empaqueter et distribuer une application (microservice, stack web, CI/CD). Son écosystème (Docker Hub, Compose, Kubernetes) est taillé pour ça.
- Incus : pour une machine Linux (serveur de test, environnement de dev complet, homelab) ou une VM.
En partie seulement
Pour un homelab ou un poste de dev, exécuter ses quelques services en OCI dans Incus évite d'installer Docker, et tout se gère au même endroit.Mais pour un usage applicatif intensif (build d'images via Dockerfile, Docker Compose, intégration Kubernetes), l'écosystème Docker reste plus complet. Incus complète Docker plus qu'il ne le remplace totalement.Oui, via le remote OCI
Depuis la 6.3 :incus remote add docker https://docker.io --protocol oci
incus launch docker:nginx web
Le conteneur apparaît avec le type CONTAINER (APP) (applicatif). Incus consomme les images OCI (Docker Hub, autres registries) mais ne les construit pas via Dockerfile. Détail dans le guide dédié aux conteneurs OCI.