Proxmox: LXC vs Machine Virtuelle Qemu
J'utilise Proxmox depuis longtemps, mais depuis un certain temps, j'ai commencé, de plus en plus, à utiliser les conteneurs LXC pour économiser du CPU et de la mémoire. L'intégration des conteneurs avec Proxmox est fabuleuse bien qu'assez différente de Docker.
Les containers linux sont plus proches des machines virtuelles qu'on ne le pense au départ… on partage le même kernel que la machine hôte, mais pour le reste, ça ressemble drôlement à une VM. Cependant, j'ai rencontré quelques petits problèmes en essayant d'exécuter Docker dans des conteneurs LXC, et aussi des difficultés à configurer un environnement graphique pour m'y connecter à distance. Ceci dit, migrer vers Podman a changé le tout pour moi: daemonless, rootless, commandes compatibles Docker… il tourne superbement dans LXC au final (unprivileged mode).
Maintenant, avec un peu plus d'expérience, plein de problèmes et de succès, voici pourquoi je choisis LXC plutôt que des VMs avec Proxmox, et vice-versa.

LXC (Linux Containers)
Avantages :
- Léger: Les conteneurs LXC partagent le noyau du système hôte, ce qui réduit la demande en ressources du système.
- Démarrage rapide: Peuvent être démarrés et arrêtés très rapidement.
- Efficacité des ressources: Utilisent moins de ressources, idéal pour les environnements avec des ressources limitées.
- Flexible: Possibilité de changer la mémoire et CPU après le démarrage.
- Intégration facile: La console de Proxmox permet de changer les options DNS et le nom de l'host plus facilement.
Inconvénients :
- Isolation limitée: Les conteneurs partagent le noyau hôte, ils sont donc moins isolés que les VMs.
- Dépendance du noyau: Seuls les systèmes d'exploitation basés sur Linux qui utilisent le même noyau que l'hôte peuvent s'exécuter dans les conteneurs LXC.
- Migration des données moins flexible: Impossible sans arrêter le conteneur.
- Problèmes de compatibilité Docker: Docker peut fonctionner dans LXC, mais il peut y avoir des conflits avec le noyau et des problèmes de stabilité, surtout avec les configurations avancées. Ceci dit, comme mentionné plus tôt, on peut souvent contourner ceux-ci avec Podman.
- Problèmes avec les volumes: Les mounts/volumes peuvent être plus compliqués à gérer dans LXC par rapport aux VMs en raison de l'accès aux systèmes de fichiers hôtes. Il faut souvent configurer les conteneurs avec un accès privilégié.
- Environnement graphique difficile à gérer: Installer un remote desktop semble compliqué à faire fonctionner et garder stable.
VMs (Machines Virtuelles)
Avantages :
- Meilleure isolation: Les VMs exécutent des systèmes d'exploitation distincts, offrant une meilleure isolation. Ce qui permet de rouler des setups complexes sans souci.
- Émulation matérielle: Peut émuler différentes configurations matérielles.
- Flexibilité: Convient pour exécuter différents systèmes d'exploitation, y compris ceux qui ne sont pas basés sur le même Kernel que la machine hôte.
- Migration plus facile: Les VMs peuvent être migrées entre les hôtes tout en étant en cours d'exécution.
Inconvénients :
- Gourmand en ressources: Les VMs nécessitent plus de ressources système (CPU, mémoire, et même stockage).
- Démarrage plus lent: Les VMs prennent plus de temps à démarrer par rapport aux conteneurs.
Conclusion
Le choix entre LXC et les VMs dépend évidemment des besoins spécifiques. Pour une isolation légère, une efficacité et un déploiement rapide, LXC peut être la meilleure option. Si vous avez besoin d'une isolation plus forte et de la capacité à exécuter différents systèmes d'exploitation, les VMs pourraient être plus appropriées. Si vous utilisez Docker ou Kubernetes, les VMs simplifie la vie drôlement.
Si vous voulez gérer un container plus comme un système d'exploitation que d'un container, sur une machine limitée en puissance, LXC est une option solide. En fait, dans 90% des cas où l'on a besoin de rouler des logiciels sous Linux, LXC fait le travail de façon très élégante.
Date de publication: 12 octobre 2025