Choisissez un conteneur LXC Proxmox pour l’hôte Docker lorsque les nœuds de périphériques Linux peuvent être exposés en toute sécurité, que l’hôte gère les pilotes GPU ou USB nécessaires et que la faible consommation de ressources ou le partage du GPU est important. Choisissez une VM lorsque le système invité doit gérer sa propre pile de pilotes, qu’un périphérique PCI doit être isolé via IOMMU ou que Docker et son accès au matériel doivent rester indépendants de l’hôte Proxmox. Les périphériques USB série conviennent souvent aux deux solutions ; le passthrough exclusif du GPU favorise généralement une VM.
Définir le « passthrough » avant de comparer LXC et une VM
LXC et KVM ne transmettent pas le matériel aux charges de travail de la même manière. Un conteneur LXC partage le noyau Proxmox : il reçoit donc généralement l’autorisation d’accéder aux nœuds de périphériques créés par l’hôte, comme `/dev/dri`, `/dev/ttyUSB0` ou `/dev/bus/usb`. L’hôte détecte toujours le matériel et charge le pilote du noyau.
Une VM exécute son propre noyau. Proxmox peut émuler un périphérique USB, connecter au système invité un périphérique USB ou un port donné, ou attribuer un périphérique PCI via VFIO et IOMMU. Le système invité charge alors son propre pilote et traite le matériel attribué comme un périphérique installé directement.
Le guide actuel de configuration d’un NAS ZimaSpace avec Proxmox présente les deux types de systèmes invités. Cet article précise le choix pour un hôte Docker dont les conteneurs ont besoin de clés USB, d’adaptateurs série, de GPU multimédias ou d’accélérateurs de calcul.
| Critère de décision | Docker dans un conteneur LXC Proxmox | Docker dans une VM |
|---|---|---|
| Noyau | Partage le noyau de l’hôte Proxmox | Exécute un noyau invité indépendant |
| Accès USB | Expose les nœuds de périphériques de l’hôte et leurs permissions | Connecte au système invité le périphérique USB ou le port sélectionné |
| Accès au GPU | Partage généralement les pilotes chargés par l’hôte et les périphériques de rendu | Peut recevoir un périphérique PCI dédié via VFIO |
| Surcoût en ressources | Moins de mémoire et de stockage requis | Mémoire et stockage supplémentaires pour le système d’exploitation invité |
| Isolation | Couplage plus étroit à l’hôte et frontière de noyau partagée | Séparation renforcée des pilotes et des noyaux |
| Portabilité | Dépend des périphériques, pilotes, identifiants et mappages compatibles de l’hôte | L’état des pilotes invités accompagne la VM, mais les mappages PCI physiques restent spécifiques à l’hôte |
| Partage du GPU | Plusieurs conteneurs peuvent utiliser le même périphérique de rendu hôte si la configuration le permet | Le passthrough d’un périphérique entier le réserve généralement à une seule VM |
| Le meilleur choix | Média, USB série et services GPU Linux partagés | Accélérateurs dédiés, pilotes propriétaires, isolation renforcée, besoins en systèmes d’exploitation invités mixtes |
Les périphériques USB sont mieux adaptés à LXC lorsqu’ils se comportent comme des périphériques Linux stables
Les adaptateurs série USB, les coordinateurs Zigbee, les interfaces d’onduleur, les accélérateurs USB Coral et les périphériques similaires fonctionnent bien dans LXC lorsque Proxmox expose le nœud de périphérique et mappe le bon propriétaire. Le conteneur Docker dans LXC reçoit ensuite ce périphérique depuis son environnement hôte Linux.
Une explication pratique de l’accès USB dans Proxmox LXC illustre le principe sous-jacent : monter le périphérique ne suffit pas si le conteneur n’est pas également autorisé à y accéder.
Utilisez des chemins stables comme `/dev/serial/by-id` lorsque l’application les prend en charge. Les numéros de bus et les affectations `/dev/ttyUSB0` peuvent changer après un redémarrage ou une reconnexion. La solution LXC devient fragile lorsque chaque mise à jour de l’hôte exige de réparer manuellement les cgroup, UID, GID ou chemins de périphérique.
Une machine virtuelle est plus simple lorsque la gestion du périphérique USB doit être autonome
Une machine virtuelle peut recevoir un périphérique USB par son ID de fournisseur et de produit ou par un port physique, puis charger le pilote du périphérique dans son propre système d’exploitation. C’est utile lorsque le périphérique nécessite un paquet du fabricant, une version différente du noyau ou une pile applicative qui ne devrait pas dépendre des bibliothèques de l’hôte Proxmox.
La machine virtuelle offre aussi une limite de diagnostic plus nette. Si l’invité perd le périphérique USB, l’administrateur peut vérifier séparément son rattachement à l’hyperviseur et le pilote de l’invité. Avec LXC, le pilote de l’hôte, le nœud de périphérique, les autorisations, le mappage du conteneur, l’environnement d’exécution Docker et l’application interviennent tous dans une même chaîne.
Le compromis concerne le comportement lors de la reconnexion. Certains périphériques USB se réinitialisent, changent d’identité ou disparaissent lors du redémarrage de l’invité. Testez le débranchement, le redémarrage de l’hôte, le redémarrage de l’invité et la récupération de l’application, plutôt que de supposer qu’une première connexion réussie garantit un fonctionnement stable.
L’accès partagé au GPU favorise généralement LXC
Pour les périphériques de rendu Intel ou AMD et les charges de travail NVIDIA prises en charge, LXC peut exposer les nœuds de périphérique du GPU de l’hôte à plusieurs services Linux. Le pilote de l’hôte Proxmox continue de gérer le GPU, ce qui permet à plusieurs conteneurs d’utiliser l’accélération matérielle pour le transcodage ou le calcul sans attribuer l’ensemble du périphérique PCI à un seul invité.
Un exemple récent de XDA sur Proxmox explique comment LXC peut partager le GPU géré par l’hôte, plutôt que de le dédier à une machine virtuelle par passthrough. Le même modèle opérationnel peut convenir à Jellyfin, Plex, Frigate ou à plusieurs services Docker lorsque les exigences en matière de pilotes et d’autorisations sont compatibles.
Le partage entraîne une dépendance entre les versions. Le pilote du noyau de l’hôte, les bibliothèques en espace utilisateur dans LXC, l’intégration du moteur d’exécution Docker et les paquets applicatifs doivent rester compatibles. Une mise à niveau du noyau ou du pilote Proxmox peut donc affecter simultanément tous les conteneurs qui utilisent le GPU.
L’attribution exclusive d’un GPU favorise généralement une machine virtuelle
Une machine virtuelle est la meilleure option lorsqu’une charge de travail a besoin d’un accès direct et exclusif à un GPU dédié, d’un pilote propriétaire pour le système invité, de la prise en charge de Windows, de l’isolation de CUDA ou d’une pile logicielle du noyau qui ne devrait pas être installée sur Proxmox. L’attribution via VFIO sépare le périphérique de l’hôte et le présente au système invité.
Le modèle PCI de Proxmox est conçu pour attribuer un périphérique PCI physique à une machine virtuelle KVM. Une discussion Docker sur Level1Techs illustre la conséquence pratique : une machine virtuelle utilise normalement le GPU qui lui est attribué de manière exclusive, tandis que LXC peut partager l’accès au périphérique de l’hôte entre plusieurs services.
Ce choix peut s’inverser si le GPU prend en charge les périphériques médiés ou SR-IOV, mais les GPU grand public et les plateformes de serveurs domestiques ne disposent pas d’une méthode universelle de partage. Vérifiez les groupes IOMMU, le comportement de réinitialisation, le micrologiciel, l’initialisation de l’affichage et si l’hôte a besoin de ce GPU, avant de concevoir votre système autour d’une attribution exclusive.
Docker dans LXC ajoute une couche de gestion imbriquée
LXC fournit déjà une isolation au niveau du système d’exploitation, et Docker y ajoute un autre environnement d’exécution de conteneurs. Cette approche peut être efficace, mais elle introduit des espaces de noms imbriqués, des cgroups, des pilotes de stockage, des capacités et des comportements de montage. Certaines fonctionnalités de Docker nécessitent des options d’imbrication ou des autorisations supplémentaires dans le conteneur Proxmox.
Une machine virtuelle présente à Docker un hôte Linux classique. La documentation Docker, les modules du noyau, le comportement du pare-feu et les pilotes de stockage sont plus faciles à interpréter, car le système invité gère sa propre configuration du noyau. En contrepartie, il faut un système d’exploitation invité complet, de la mémoire réservée, la gestion d’un disque virtuel et une couche de mises à jour supplémentaire.
Ne choisissez pas LXC uniquement pour économiser quelques centaines de mégaoctets si la configuration requise impose un conteneur privilégié, de larges autorisations sur les périphériques et des modifications de l’hôte non documentées. L’option légère perd de son intérêt lorsque chaque mise à niveau dépend du souvenir d’exceptions que la machine virtuelle aurait contenues dans son système invité.
L’isolation et la sécurité peuvent inverser le classement des performances
LXC partage le noyau de l’hôte. Un conteneur privilégié mal configuré ou un mappage de périphérique trop large peut donc exposer une partie plus importante que prévu du nœud Proxmox. Un LXC non privilégié, des autorisations de périphérique restreintes, des montages en lecture seule et un nombre minimal de capacités renforcent la séparation, mais l’architecture reste plus étroitement couplée qu’une VM complète.
Une VM fournit un noyau distinct et peut isoler les piles GPU propriétaires, le réseau Docker, les modules de pare-feu et les logiciels expérimentaux de la base Proxmox. Cette séparation est précieuse lorsque l’hôte Docker exécute des images tierces, des services publics, des paquets d’IA locale ou des essais fréquents de pilotes.
La VM n’est pas automatiquement sécurisée. Le passthrough PCI, les montages de stockage partagés, les identifiants de gestion et le réseau ponté créent toujours des vecteurs d’attaque et de défaillance. Choisissez cette solution lorsque le noyau et les pilotes indépendants simplifient réellement le modèle de menace et de maintenance.
Les sauvegardes et la migration privilégient des formes de simplicité différentes
Les sauvegardes LXC sont compactes et rapides, car l’invité ne contient pas une pile matérielle virtuelle complète. Cependant, rétablir l’accès au matériel sur un autre nœud Proxmox nécessite des nœuds de périphérique, des groupes, des pilotes et des autorisations correspondants. Le système de fichiers du conteneur peut être migré, mais pas le contrat d’accès au périphérique physique.
Une sauvegarde de VM comprend le système d’exploitation invité et la configuration des pilotes, ce qui rend la récupération des applications plus autonome. Les connexions USB et les adresses PCI doivent toutefois être remappées sur le nœud de destination, et un GPU en passthrough peut empêcher la migration à chaud, car le périphérique physique est lié à un seul nœud.
Le flux de sauvegarde Proxmox de ZimaSpace couvre la protection des invités. Pour cette comparaison, la récupération n’est complète que lorsque Docker démarre et que l’application dépendant de l’USB ou du GPU détecte le périphérique de remplacement.
Effectuez un test de récupération des périphériques avant de choisir le type d’invité
- Répertoriez tous les périphériques USB et PCI requis par les applications Docker.
- Déterminez si chaque périphérique doit être partagé avec l’hôte ou attribué à un seul invité.
- Testez le pilote de l’hôte, le nœud de périphérique, le mappage UID/GID et les autorisations Docker pour LXC.
- Testez le regroupement IOMMU, l’installation des pilotes dans le conteneur invité et le comportement de réinitialisation d’une VM.
- Redémarrez l’hôte Proxmox et confirmez que le périphérique est de nouveau connecté automatiquement.
- Restaurez le conteneur invité à partir de la sauvegarde et recréez le mappage matériel à partir de la documentation.
- Répétez l’opération sur un autre nœud compatible si la migration ou le remplacement du matériel est important.
Évaluez le comportement des applications plutôt que la seule surcharge de l’invité. La stabilité du transcodage matériel, la reconnexion USB, les mises à jour des pilotes, la maintenance de l’hôte et le temps de restauration comptent généralement davantage qu’une petite différence de performances CPU entre LXC et KVM.
Quel invité Proxmox convient à l’hôte Docker ?
Quand choisir LXC
Choisissez LXC lorsque toutes les charges de travail sont basées sur Linux, que l’hôte peut gérer les pilotes, que les périphériques USB exposent des nœuds stables et qu’un GPU doit être partagé entre plusieurs services. Gardez le conteneur non privilégié si possible et documentez chaque mappage de périphérique et de groupe.
Quand choisir une VM
Choisissez une VM lorsque l’hôte Docker a besoin de la propriété exclusive d’un GPU PCI, de pilotes propriétaires ou expérimentaux, d’une meilleure isolation du noyau ou d’une portabilité accrue de l’ensemble de la pile logicielle. Prévoyez suffisamment de RAM et de stockage pour l’invité et testez la réinitialisation du périphérique après un redémarrage.
Quand répartir les charges de travail
Exécutez les services légers de gestion des médias et des périphériques USB dans LXC, tout en réservant à une VM les calculs GPU exclusifs, les outils nécessitant Windows ou les piles Docker non fiables. Une plateforme compatible avec Proxmox peut prendre en charge les deux, mais chaque périphérique physique doit avoir un modèle de propriété clairement défini et documenté.
FAQ
Docker peut-il fonctionner de manière fiable dans un LXC non privilégié ?
Oui, pour de nombreuses charges de travail, mais l’imbrication, les pilotes de stockage, les montages, le réseau et l’accès aux périphériques peuvent nécessiter une configuration supplémentaire. Testez précisément les fonctionnalités Docker utilisées et évitez de passer à un conteneur privilégié simplement pour contourner un problème de permissions inexpliqué.
Une même carte graphique peut-elle être utilisée à la fois par un LXC et une VM ?
Pas avec un passthrough VFIO classique de l’ensemble du périphérique, utilisé simultanément. LXC peut partager un périphérique de rendu géré par l’hôte, tandis qu’une VM nécessite généralement que le périphérique soit détaché de l’hôte. La prise en charge de SR-IOV ou des périphériques médiés peut changer la donne sur certains matériels.
Quelle option choisir pour un coordinateur Zigbee USB ?
Les deux options peuvent convenir. LXC est efficace lorsqu’un chemin série stable basé sur l’identifiant du périphérique et des permissions fiables sont disponibles. Une VM est plus simple lorsque la pile logicielle ou le pilote du coordinateur doit rester indépendant de l’hôte Proxmox.
Verdict final
Utilisez LXC pour héberger Docker lorsque les ressources USB et GPU peuvent être partagées via la pile de pilotes Linux de l’hôte Proxmox et que la faible surcharge est importante. Utilisez une VM lorsque le matériel doit être réservé à l’invité, que les pilotes doivent être isolés ou que la restauration doit préserver un système d’exploitation autonome. Faites votre choix en fonction de la propriété des périphériques et du comportement lors de la restauration, et non en supposant que les conteneurs sont toujours plus simples.
Comparaison de produits
À lire aussi

Ripple-65B vs Qwen3.8-27B pour coder en local : lequel convient à votre machine ?
Comparez les options matérielles locales et les environnements d’exécution pour Ripple-65B Preview et Qwen3.8-27B, à l’aide d’un protocole de test contrôlé pour les charges...

LFM2.5-24B-A2B vs API DeepSeek : lequel s’intègre le mieux à votre workflow d’agent sur serveur domestique ?
Comparez l’inférence locale de LFM2.5-24B-A2B à l’API DeepSeek pour les agents sur serveur domestique : limites de confidentialité, matériel, maintenance, qualité et coûts.

Granite Speech 5.0 vs transcription dans le cloud : comparaison de la confidentialité, du matériel et de la précision
Comparez Granite Speech 5.0 en local à la transcription dans le cloud en matière de confidentialité audio, de configuration, de matériel, de précision, de...



