Proxmox VE : bien débuter avec les conteneurs LXC
L’utilisation des conteneurs LXC sur Proxmox VE représente une méthode efficace pour exécuter plusieurs environnements Linux sur un même noyau, sans la lourdeur liée à l’utilisation de machines virtuelles complètes. Ce tutoriel vous explique pas à pas comment créer vos premiers conteneurs LXC sur Proxmox VE.
Si vous avez régulièrement besoin d’exécuter des services légers qui ne nécessitent pas une machine virtuelle complète, alors le conteneur LXC (Linux Container) est la réponse adaptée. La raison : il offre des performances quasi natives.
Il y a trois façons d’exécuter des conteneurs avec Proxmox VE :
- Exécuter un conteneur LXC à partir d’une image d’un système d’exploitation Linux de base
- Exécuter un conteneur LXC à partir d’une image OCI
- Exécuter un conteneur via Docker par l’intermédiaire d’une machine virtuelle ou d’un conteneur LXC dédié (ce qui est vrai aussi avec Podman)
Les deux premières méthodes évoquées ci-dessus sont natives, tandis que la troisième méthode repose sur l’utilisation de Docker comme composant additionnel.
Vous pouvez aussi lire mes précédents tutoriels dédiés à Proxmox VE :
- Bien débuter avec Proxmox VE : le guide complet
- Proxmox VE : comment créer une machine virtuelle Windows 11 ?
- Proxmox VE : la gestion des snapshots
- La configuration du réseau avec Proxmox VE : le guide pour bien débuter
Sommaire
- Comprendre l’architecture LXC vs KVM
- Proxmox VE – Conteneur LXC vs Machine virtuelle
- Créer son premier conteneur LXC sur Proxmox VE
-
Administration des conteneurs LXC avec pct
- Gestion des modèles LXC
- Lister les conteneurs
- Afficher la configuration d’un conteneur LXC
- Entrer dans un conteneur depuis l’hôte (sans SSH)
- Arrêter un conteneur proprement
- Démarrer un conteneur LXC
- Modifier la configuration du conteneur
- Créer un conteneur LXC en ligne de commande
- Supprimer un conteneur LXC
- Gestion avancée du stockage : bind mounts
- Sauvegarder et restaurer des conteneurs LXC
- Conclusion
Comprendre l’architecture LXC vs KVM
Avant de manipuler Proxmox VE pour créer votre premier conteneur, il est nécessaire de bien comprendre l’architecture de Proxmox VE. Celle-ci repose sur deux technologies : KVM et LXC.
Contrairement à une VM KVM qui émule du matériel (carte mère, BIOS, disque) et charge son propre noyau (Kernel complet et indépendant), un conteneur LXC partage le noyau de l’hyperviseur (Proxmox VE). C’est une différence majeure entre une machine virtuelle et un conteneur.
L’isolation, quant à elle, est assurée par deux mécanismes du noyau Linux :
- Les Namespaces : ils isolent les groupes de processus et de ressources les uns des autres. Le conteneur LXC “pense” être seul sur la machine.
- Les Cgroups (Control Groups) : ils limitent et mesurent l’utilisation des ressources (CPU, RAM, I/O) pour éviter qu’un conteneur ne sature l’hôte.
En comparaison des machines virtuelles, les conteneurs ont deux avantages majeurs : ils démarrent très rapidement et l’empreinte mémoire est réduite (moins de RAM, moins d’espace disque). Néanmoins, il est à noter que les conteneurs LXC sont limités à l’exécution de distributions Linux (donc pas de Windows).
La dépendance vis-à-vis du noyau du système d’exploitation hôte (Debian utilisé par Proxmox VE) s’avère être une contrainte dans certains cas. Autrement dit, certaines applications ne pourront pas s’exécuter dans un conteneur LXC (c’est d’autant plus vrai si vous utilisez un LXC pour exécuter des conteneurs Docker).

Enfin, LXC n’est pas une technologie développée par Proxmox. Vous pouvez créer des conteneurs LXC sur Linux sans utiliser Proxmox VE.
Quelques mots d’histoire : LXC est utilisé par Proxmox VE depuis la version 4.0, tandis qu’auparavant, il s’appuyait sur OpenVZ.
Proxmox VE – Conteneur LXC vs Machine virtuelle
Ci-dessous un comparatif permettant de bien comprendre les différences majeures entre un conteneur LXC et une machine virtuelle au niveau des fonctionnalités.
| Fonctionnalité | Conteneur LXC | Machine virtuelle |
| Noyau | Partagé (Hôte) | Indépendant |
| OS Supportés | Linux uniquement | Windows, Linux, BSD… |
| Sauvegarde | ✅ Oui | ✅ Oui |
| Instantané (Snapshot) | ⚠️ Partiel (pas la RAM) | ✅ Complet |
| Migration à chaud | ❌ Non (contrairement à LXD, qui ne doit pas être confondu avec LXC) | ✅ Oui |
| Pare-feu | ✅ Oui | ✅ Oui |
| Modification de la RAM et du CPU à chaud | ✅ Oui | ✅ Hotplug (configuration de la VM et prise en charge par l’OS invité) |
| Docker (Imbrication) | ⚠️ Possible (option “Nesting”) | ✅ Natif |
| Sécurité / Isolation | Moyenne (namespace) | Élevée (matériel virtuel) |
Créer son premier conteneur LXC sur Proxmox VE
Gestion des modèles de conteneurs LXC
Pour créer un conteneur, vous n’utilisez pas une image ISO d’installation classique, mais un Template (modèle). C’est une archive pré-installée et prête à l’emploi d’une distribution. Voyons comment importer un premier modèle.
- Connectez-vous à l’interface web de Proxmox.
- Dans l’arborescence à gauche, sélectionnez votre stockage (par défaut nommé ).
- Cliquez sur la section “CT Templates“.
- Cliquez sur le bouton “Templates” dans la barre d’outils.

Une liste de modèles officiels apparaît (Debian, Ubuntu, Alpine, CentOS, AlmaLinux, etc.). Recherchez le mot clé afin d’installer le modèle Debian 13 intitulé . Sélectionnez-le et cliquez sur le bouton “Download“.
Je vous recommande Debian pour une raison simple : le conteneur LXC aura la même base que l’hôte Proxmox VE, ce dernier étant basé sur Debian. Et aussi, je dois l’avouer, j’apprécie beaucoup cette distribution.

L’opération est relativement rapide car les fichiers sont légers (une centaine de mégaoctets pour une Debian sans interface graphique).

Le modèle de conteneur est téléchargé. Il est prêt à l’emploi.

La liste des modèles disponibles sur Proxmox VE contient un ensemble de modèles Turnkey Linux. Il s’agit d’images pré-configurées avec des applications prêtes à l’emploi, comme WordPress, Apache Tomcat, etc… Il y a des dizaines de modèles applicatifs prêts à l’emploi. Cela peut s’avérer pratique pour déployer rapidement une application à des fins de tests.

Création d’un conteneur LXC
Une fois le modèle récupéré, nous pouvons passer à la création d’un premier conteneur LXC basé sur celui-ci. Au sein de l’interface de Proxmox VE, cliquez sur le bouton bleu “Create CT” situé en haut à droite.

Un assistant étape par étape similaire à celui disponible pour créer une machine virtuelle s’affiche à l’écran.
Onglet Général
- Node : sélectionnez votre serveur Proxmox.
- CT ID : l’identifiant unique de ce conteneur, vous pouvez laisser Proxmox VE gérer.
- Hostname : le nom du conteneur, mais aussi du système dans le conteneur (par exemple : ).
- Privileged vs Unprivileged : par défaut, la case “Unprivileged container” est cochée. Pour des raisons de sécurité, il est recommandé de conserver cette option cochée. Dans un conteneur non privilégié, l’utilisateur à l’intérieur du conteneur est mappé vers un utilisateur sans privilèges sur l’hôte. Cela empêche le conteneur LXC de pouvoir impacter le système hôte (évasion du conteneur).
- Nesting : décochez cette option, sauf si vous souhaitez exécuter un conteneur dans ce conteneur (via Docker, par exemple). Néanmoins, elle est aussi nécessaire pour certains systèmes, comme Debian 13 (à cause de Systemd), donc ici nous devons cocher l’option, sinon le conteneur sera inutilisable.
- Password : définissez le mot de passe root du futur conteneur LXC. Vous pouvez aussi charger une clé SSH publique pour l’authentification par clé (recommandé)

Onglet Template
Sélectionnez ici le stockage où vous avez téléchargé votre template, puis choisissez l’image Debian 13 téléchargée précédemment.

Onglet Disks
Définissez la taille du disque virtuel. Pour un service web simple, 8 Go peuvent suffire. Ici, tout dépend de vos besoins en fonction de la finalité du conteneur LXC.

Onglet CPU
Spécifiez le nom de cœur de CPU alloué à ce conteneur. Adaptez éventuellement par la suite en fonction de la charge de ce conteneur.

Onglet Memory
Définissez la RAM, par exemple 512 Mo et le Swap. Contrairement aux VMs, la mémoire non utilisée par le conteneur reste disponible pour l’hôte. C’est aussi l’un des avantages de LXC.

Onglet Network
C’est ici que vous définissez la configuration réseau de votre conteneur. Bien souvent, une adresse IP sera allouée s’il s’agit d’un conteneur destiné à la production. Sinon, vous pouvez conserver le mode DHCP. Veillez également à sélectionner la bonne interface réseau (Bridge) et, si besoin ajoutez un numéro de VLAN.

Onglet DNS
Par défaut, le nom de domaine du serveur Proxmox et le même serveur DNS seront utilisés. Si besoin, adaptez ces valeurs ici.

Lancez la création du conteneur, puis patientez un instant.

Une fois le conteneur LXC créé, il apparaît dans l’inventaire de votre hôte. Vous remarquerez que les conteneurs ont un icône différent de celui des machines virtuelles. Pour démarrer le conteneur, effectuez un clic droit sur son nom, puis cliquez sur “Start“.

Utilisation du conteneur LXC
Pour commencer à configurer ce conteneur LXC, utilisez la même méthode que pour l’administration d’une machine virtuelle : la console. L’accès SSH est aussi une option, même s’il faudra commencer par récupérer l’adresse IP du conteneur s’il est en DHCP (via l’onglet “Network” ou la ligne de commande).
Via la console, connectez-vous à partir du mot de passe précisé lors de la configuration du conteneur.

Le service SSH est déjà installé et configuré par défaut.

La suite des opérations vous appartient !
Administration des conteneurs LXC avec pct
Pour l’administration des conteneurs Proxmox VE, vous pouvez utiliser un outil en ligne de commande : Proxmox Container Toolkit. Il est accessible via la commande , et celle-ci s’exécute directement sur l’hôte Proxmox VE (et non dans le conteneur).
Découvrons ensemble quelques commandes.
Gestion des modèles LXC
La commande contient les options nécessaires pour parcourir les modèles et effectuer le téléchargement d’un modèle. Nous aurions pu télécharger le modèle précédent à l’aide de cette commande.
Vous pouvez ensuite lister les modèles de conteneurs disponibles sur l’espace de stockage, c’est-à-dire ceux déjà téléchargés.
Lister les conteneurs
Afficher la configuration d’un conteneur LXC
Sachez que vous pouvez également consulter la configuration en allant lire directement le fichier brut (le nom du fichier correspond à l’ID du conteneur) :
Entrer dans un conteneur depuis l’hôte (sans SSH)
C’est une fonction très pratique si vous avez perdu le mot de passe root, coupé l’accès réseau du conteneur ou simplement pour éviter d’exposer un accès distant.
Dans la commande ci-dessus, remplacez par l’ID de votre conteneur.
Arrêter un conteneur proprement
Démarrer un conteneur LXC
Modifier la configuration du conteneur
Vous pouvez modifier la configuration d’un conteneur à chaud, c’est-à-dire avec le conteneur en cours d’exécution. Si vous procédez via la commande , voici la syntaxe à respecter :
Si vous souhaitez ajouter de la RAM sans passer par l’interface graphique, vous pouvez utiliser cette technique. Voici comment passer à 1 024 Mo de RAM sur le conteneur avec l’ID .
Vous pourriez aussi décider de configurer, comme par exemple l’option “Nesting” directement via la ligne de commande.
Créer un conteneur LXC en ligne de commande
La commande est également capable de créer un conteneur LXC sur votre hôte Proxmox. Cela permet d’automatiser la création de conteneurs ! De ce fait, cette commande tout-en-un accepte énormément d’arguments lorsqu’il est question de créer et configurer un conteneur en une seule fois.
La commande ci-dessous permet de créer et de configurer un conteneur sur le même principe que ce qui a été fait via l’interface graphique. À savoir, un conteneur avec l’image Debian 13, 512 Mo de RAM, 1 cœur de CPU, 8 Go de disque et une interface réseau en DHCP avec un tag sur le VLAN 10. En complément, l’option permet de démarrer automatiquement le conteneur dès qu’il est prêt.
Suite à l’exécution de cette commande, un conteneur nommé avec l’ID a été créé.
Exemple de sortie :
Dans la sortie de cette commande, cette ligne est intéressante : . Elle laisse sous-entendre que ce conteneur a besoin du mode Nesting pour fonctionner, notamment à cause de Systemd qui a besoin de pouvoir utiliser la fonction de namespaces. C’est un avertissement qui est lié à Debian 13 (et à sa version de Systemd), comme je l’évoquais précédemment. Le mode Nesting doit être activé dans le conteneur.
Je vous rappelle que c’est possible d’éditer la configuration du conteneur en ligne de commande :
Grâce à un script Bash, notamment avec une boucle for et quelques variables, vous pourriez créer un script pour automatiser la création d’un ensemble de conteneurs.
Supprimer un conteneur LXC
Pour supprimer un conteneur LXC directement depuis le Terminal, vous devez l’arrêter puis le supprimer. Mais, attention, cette action est irréversible. Cette commande supprime le conteneur, sa configuration et son disque.
Gestion avancée du stockage : bind mounts
Si vous souhaitez partager un dossier de l’hôte Proxmox directement dans le conteneur LXC, c’est envisageable. C’est ce qu’on appelle un Bind Mount. On peut citer les cas d’usage suivants :
- Accéder à votre répertoire personnel () dans le système invité du conteneur,
- Accéder au contenu d’un périphérique USB dans le système invité du conteneur,
- Accéder aux données d’un partage NFS monté sur l’hôte dans le système invité du conteneur.
Pour effectuer la configuration, vous avez deux options : éditer le fichier de configuration du conteneur (par exemple : ) ou utiliser la commande .
Bien que cette pratique soit possible techniquement, elle a un impact au niveau de la sécurité.
Avec un conteneur Unprivileged, vous rencontrerez des problèmes de permission. Pour corriger cela, il est nécessaire de basculer le conteneur en Privileged ou d’ajuster les permissions avec un mapping au niveau des ID… Une méthode est détaillée sur ce GitHub et, comme vous le verrez, cela implique de créer des groupes sur l’hôte Docker, puis d’ajuster la configuration dans le conteneur LXC, le tout sans passer le conteneur en Privileged.
Dans le cas où le dossier doit être accessible uniquement en lecture seule dans le conteneur, cette contrainte n’existe pas.
Imaginez que vous disposiez d’une banque de données sur l’hôte Proxmox dans et que vous souhaitiez que votre conteneur puisse lire ces fichiers.
Connectez-vous en SSH sur votre serveur Proxmox (l’hôte) et créez un dossier avec un fichier de test :
Vous devez ensuite configurer le point de montage.
Nous allons utiliser la commande pour ajouter ce point de montage à la configuration du conteneur. Nous utilisons l’option (Read-Only) pour garantir que le conteneur ne pourra pas supprimer ou modifier les données de l’hôte (lecture seule).
Exécutez cette commande sur l’hôte (remplacez par l’ID de votre conteneur) :
Pour vous expliquer cette commande :
- : définit le premier point de montage (Mount Point 0).
- : le chemin source sur l’hôte Proxmox.
- : le chemin de destination à l’intérieur du conteneur.
- : active le mode lecture seule.
Redémarrez le conteneur pour appliquer les changements, puis connectez-vous à l’intérieur :
Vous devriez voir le contenu du fichier créé sur l’hôte Proxmox !
Note : si vous avez besoin que votre conteneur puisse écrire dans ce dossier, la configuration se complexifiera ! Comme je l’expliquais précédemment, vous devrez soit basculer votre conteneur en mode “Privileged” (moins sécurisé), soit configurer un “ID Mapping” (mappage des utilisateurs) pour faire correspondre les droits de l’utilisateur du conteneur avec ceux du dossier de l’hôte. Privilégiez les montages en lecture seule ou l’utilisation de volumes de stockage dédiés directement sur les conteneurs.
Sauvegarder et restaurer des conteneurs LXC
La protection des données ne doit jamais être négligée, et cela est également vrai pour les conteneurs. La bonne nouvelle : Proxmox VE intègre un outil de sauvegarde pour les LXC.
Le moteur de sauvegarde utilisé est . Il existe trois modes principaux pour les conteneurs :
| Mode | Workflow | Interruption de service |
| Stop | Arrêt complet du conteneur ➔ Sauvegarde ➔ Redémarrage. | Longue (le temps de la copie !) |
| Suspend | 1er (à chaud) ➔ Suspension ➔ 2ème (différentiel) ➔ Reprise. | Minimale (le temps de copier les différences) |
| Snapshot | Suspension ➔ Snapshot stockage ➔ Reprise immédiate ➔ Archivage en arrière-plan. | Très faible (quasi imperceptible) |
Le mode “Stop” est très utile pour les services critiques où la cohérence des données doit être parfaite (une application qui pourrait y être sensible).
Pour compléter ce tableau, voici deux informations à prendre en considération (ce qui fait notamment écho à la notion évoquée précédemment) :
- Les “Bind Mounts” sont exclus : Proxmox ne sauvegarde jamais le contenu des dossiers montés depuis l’hôte (les fameux Bind Mounts). C’est à vous de gérer leur sauvegarde séparément, côté hôte.
- Exclusion de volumes : si vous utilisez le mode Snapshot, tous les volumes du conteneur doivent supporter les snapshots. Si vous avez un disque spécifique qui ne le supporte pas, vous devez l’exclure de la sauvegarde en définissant une option sur le point de montage : .
Pour réaliser une sauvegarde, vous avez deux options : une sauvegarde manuelle et immédiate directement depuis la section “Backup” du conteneur à sauvegarder, une sauvegarde planifiée via une tâche créée dans la section “Backup” du Datacenter.
Pour programmer une sauvegarde automatique :
- Allez dans Datacenter > Backup.
- Créez un nouveau job.
- Sélectionnez l’heure, le stockage de destination et les conteneurs concernés.
- Sélectionnez le mode de sauvegarde (référez-vous au tableau ci-dessus).
- Validez la création du job.

Un article complet sur la fonction de sauvegarde native de Proxmox VE sera publié prochainement.
Conclusion
En suivant ce guide, vous devriez être en mesure de créer vos premiers conteneurs LXC sur un hyperviseur Proxmox VE ! Pour aller plus loin, consultez l’article dédié à l’utilisation des images OCI avec les conteneurs LXC :
Pour rappel, bien que les conteneurs soient isolés, ils partagent le même noyau que l’hôte physique. Voici quelques règles à respecter pour limiter l’impact au niveau sécurité :
- Privilèges : utilisez des conteneurs “Unprivileged” autant que possible.
- Nesting : activez l’option “Nesting” uniquement si nécessaire,
- SSH : si vous autorisez SSH dans le conteneur, interdisez le login root par mot de passe et préférez les clés SSH, exactement comme sur une VM ou un serveur physique.