
Depuis la version 6.3, Incus ne se limite plus aux conteneurs système : il sait lancer des images OCI, c'est-à-dire des conteneurs applicatifs issus de Docker Hub et d'autres registries. Ce guide ajoute le remote OCI, lance une image (nginx), explique le type CONTAINER (APP) et pose les limites de cette compatibilité. Testé sur Incus 7.0. Pour qui veut exécuter de l'applicatif sans installer Docker, sur la même plateforme que ses conteneurs système et ses VMs.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Ajouter le remote OCI (
docker:). - Lancer une image applicative depuis Docker Hub.
- Comprendre le type
CONTAINER (APP). - Connaître les limites par rapport à Docker.
Prérequis
Section intitulée « Prérequis »- Incus installé et initialisé (voir l'installation).
- Une connexion sortante vers les registries (Docker Hub).
Ajouter le remote OCI
Section intitulée « Ajouter le remote OCI »Contrairement au remote images: (déjà présent), le remote Docker n'est pas configuré par défaut. On l'ajoute une fois, avec le protocole oci :
incus remote add docker https://docker.io --protocol ociincus remote list| docker | https://docker.io | oci | none | YES | NO | NO |Lancer une image OCI
Section intitulée « Lancer une image OCI »Une fois le remote en place, incus launch fonctionne comme pour un conteneur système, en pointant le remote docker: :
incus launch docker:nginx webincus listLa sortie montre un conteneur d'un type particulier, CONTAINER (APP) :
+------+---------+-----------------------+-----------------+| NAME | STATE | IPV4 | TYPE |+------+---------+-----------------------+-----------------+| web | RUNNING | 10.173.191.174 (eth0) | CONTAINER (APP) |+------+---------+-----------------------+-----------------+Comprendre le type CONTAINER (APP)
Section intitulée « Comprendre le type CONTAINER (APP) »Le suffixe (APP) signale un conteneur applicatif, par opposition au conteneur système classique. La différence est de fond :
- un conteneur système exécute un
initcomplet (systemd) et une distribution entière ; - un conteneur applicatif (APP) exécute le processus de l'image (ici nginx) comme PID 1, sans init système.
Concrètement, on ne s'y connecte pas avec incus shell comme à une machine : on interagit avec le processus applicatif, exactement comme avec un conteneur Docker. C'est le comportement attendu pour une image OCI.
Exposer le service
Section intitulée « Exposer le service »Comme pour toute instance Incus, on publie un port avec un device proxy qui relie un port de l'hôte au conteneur :
incus config device add web http proxy \ listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80Le serveur nginx du conteneur devient alors accessible sur le port 8080 de l'hôte. Le guide Réseau détaille le device proxy et ses options.
Les limites par rapport à Docker
Section intitulée « Les limites par rapport à Docker »La compatibilité OCI d'Incus est pratique, mais ce n'est pas un remplacement complet de Docker. À garder en tête :
- pas de build d'images via Dockerfile (Incus consomme des images, il ne les construit pas) ;
- pas de Docker Compose ni d'orchestration applicative native ;
- l'écosystème d'outils (registres privés, scanners, CI) reste pensé pour Docker.
Pour un homelab ou quelques services, lancer des images OCI dans Incus évite d'installer Docker. Pour un usage applicatif intensif, Docker et son écosystème restent plus adaptés. Voir le comparatif Incus vs Docker.
À retenir
Section intitulée « À retenir »- Le remote OCI s'ajoute une fois :
incus remote add docker https://docker.io --protocol oci. incus launch docker:<image>lance une image applicative depuis Docker Hub.- Le type
CONTAINER (APP)indique un conteneur applicatif (processus en PID 1, pas d'init). - On expose un service avec un device proxy (
listen/connect). - Incus consomme des images OCI mais ne les construit pas : ce n'est pas un Docker complet.
FAQ : questions fréquentes sur les conteneurs OCI dans Incus
Section intitulée « FAQ : questions fréquentes sur les conteneurs OCI dans Incus »Ajouter le remote puis launch
Le remote Docker n'est pas configuré par défaut, on l'ajoute une fois :incus remote add docker https://docker.io --protocol oci
incus launch docker:nginx web
Incus télécharge l'image OCI depuis Docker Hub et démarre un conteneur applicatif. La fonctionnalité existe depuis Incus 6.3.Un conteneur applicatif
Le suffixe(APP) distingue un conteneur applicatif (issu d'une image OCI) du conteneur système classique :- un conteneur système exécute un
initcomplet (systemd) et une distribution entière ; - un conteneur
(APP)exécute le processus de l'image (ex. nginx) comme PID 1, sans init.
incus shell.Non, Incus consomme mais ne construit pas
Incus consomme des images OCI depuis les registries, mais ne les construit pas : pas d'équivalent dudocker build via Dockerfile.Pour construire des images applicatives, utilisez Docker, Podman ou Buildah. Incus reste pensé pour exécuter des conteneurs système et des VMs ; l'OCI est un complément pour lancer de l'applicatif sans installer Docker.Le device proxy
On publie un port avec un device proxy qui relie un port de l'hôte au conteneur :incus config device add web http proxy \
listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80
Le service (ici nginx sur le port 80 du conteneur) devient accessible sur le port 8080 de l'hôte. C'est le même mécanisme que pour n'importe quelle instance Incus, conteneur système ou VM.