Aller au contenu
Conteneurs & Orchestration medium

Lancer des conteneurs Docker (OCI) avec Incus

5 min de lecture

logo incus

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.

  • Ajouter le remote OCI (docker:).
  • Lancer une image applicative depuis Docker Hub.
  • Comprendre le type CONTAINER (APP).
  • Connaître les limites par rapport à Docker.
  • Incus installé et initialisé (voir l'installation).
  • Une connexion sortante vers les registries (Docker Hub).

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 :

Fenêtre de terminal
incus remote add docker https://docker.io --protocol oci
incus remote list
| docker | https://docker.io | oci | none | YES | NO | NO |

Une fois le remote en place, incus launch fonctionne comme pour un conteneur système, en pointant le remote docker: :

Fenêtre de terminal
incus launch docker:nginx web
incus list

La sortie montre un conteneur d'un type particulier, CONTAINER (APP) :

+------+---------+-----------------------+-----------------+
| NAME | STATE | IPV4 | TYPE |
+------+---------+-----------------------+-----------------+
| web | RUNNING | 10.173.191.174 (eth0) | 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 init complet (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.

Comme pour toute instance Incus, on publie un port avec un device proxy qui relie un port de l'hôte au conteneur :

Fenêtre de terminal
incus config device add web http proxy \
listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80

Le 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.

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.

  • 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 »

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn