Exercice 1 — Un conteneur LXC dans Proxmox¶
Durée : ~30 min · Individuel · Théorie associée : VM, LXC et Docker
Objectif¶
Vous avez créé un conteneur LXC entièrement depuis l'interface web de Proxmox. Vous savez d'où il vient (un template, l'équivalent d'une image), et vous avez constaté ce qui le distingue d'une VM : sa taille, sa consommation de mémoire et sa vitesse de démarrage. Vous referez les mêmes constats avec Docker dans les exercices suivants.
Prérequis¶
- Votre serveur Proxmox de la semaine 2, accessible à
https://10.70.44.#:8006. Le#est votre numéro de serveur dans le tableau de la semaine 2. - Tout l'exercice se fait dans l'interface web de Proxmox. Les quelques commandes se tapent dans la Console du conteneur.
Vous travaillez seul, sur votre propre serveur. Dans tout l'exercice, remplacez # par votre numéro de serveur.
| CT ID | Nom | Adresse |
|---|---|---|
741 |
lxc-test |
10.70.#.41/16 |
Exemple : sur le serveur S04, le conteneur prend l'adresse 10.70.4.41. Les captures montrent ce serveur.
Étape 1 — Trouver l'image : le template¶
Sélectionnez le stockage local de votre nœud, puis l'onglet CT Templates.
Si debian-13-standard_13.6-1_amd64.tar.zst n'y est pas, cliquez sur Templates, cherchez debian-13-standard, puis cliquez sur Download. Le template téléchargé sert à tous les conteneurs que vous créerez sur ce nœud.
Une fois le template dans la liste, regardez sa taille (colonne Size). Comparez-la à celle de l'ISO de Debian de la semaine 2 et à celle de l'image cloud Debian de la semaine 4, environ 350 Mo.
Un template LXC est une archive qui contient l'arborescence d'un Debian (/bin, /etc, /usr...), mais pas de noyau. C'est ce qui le rend si petit. Il a les mêmes propriétés qu'une image Docker :
| Template LXC | Image Docker | |
|---|---|---|
| Contenu | Les fichiers d'un système, sans noyau | Les fichiers d'une application et de ses dépendances, sans noyau |
| Provenance | Le dépôt de Proxmox, bouton Templates | Un registre, Docker Hub par défaut |
| Nom | debian-13-standard_13.6-1_amd64 : nom, version, architecture |
nginx:1.27 : nom, étiquette |
| Utilisation | Sert de point de départ à chaque conteneur, sans jamais être modifié | Pareil |
Étape 2 — Créer le conteneur¶
Cliquez sur Create CT en haut à droite.
| Onglet | Champ | Valeur |
|---|---|---|
| General | Node | votre nœud |
| General | CT ID | 741 |
| General | Hostname | lxc-test |
| General | Unprivileged container | coché (valeur par défaut) |
| General | Nesting | coché (valeur par défaut) |
| General | Password | au choix, notez-le |
| Template | Storage / Template | local / debian-13-standard_13.6-1_amd64.tar.zst |
| Disks | Disk size (GiB) | 4 |
| CPU | Cores | 1 |
| Memory | Memory / Swap | 512 / 512 (valeurs par défaut) |
| Network | Bridge | vmbr0 |
| Network | IPv4 | Static, 10.70.#.41/16 |
| Network | Gateway (IPv4) | 10.70.0.1 |
Remarquez ce que l'assistant ne demande pas : pas d'ISO, pas de type de système, pas de contrôleur de disque, pas de modèle de carte réseau. Un conteneur n'a pas de matériel virtuel.
À l'onglet Confirm, cochez Start after created, relisez le résumé, puis cliquez sur Finish.
Étape 3 — Mesurer la création¶
Dans le panneau Tasks, en bas de l'écran, repérez la tâche CT 741 - Create. Comparez ses colonnes Start Time et End Time : la création a pris environ une minute.
Double-cliquez sur la tâche pour lire son journal. Proxmox n'a rien installé : il a créé le disque, puis y a extrait l'archive du template. À la semaine 2, l'installation de Windows Server 2025 avait pris une vingtaine de minutes.
Étape 4 — Mesurer le démarrage¶
Sélectionnez votre conteneur, puis cliquez sur Shutdown en haut à droite. Attendez que son icône devienne grise.
Ouvrez l'onglet Console, puis cliquez sur Start, et regardez la console. L'invite lxc-test login: apparaît en une ou deux secondes. Dans le panneau Tasks, la tâche CT 741 - Start le confirme.
Une VM met de 30 secondes à une minute pour en arriver là : son micrologiciel doit s'exécuter, puis son noyau doit démarrer et détecter son matériel virtuel. Le conteneur n'a ni micrologiciel ni noyau : il utilise le noyau du nœud, déjà en marche. Proxmox ne fait que lancer ses programmes dans un espace isolé.
Étape 5 — Regarder à l'intérieur¶
Dans la console, connectez-vous avec root et le mot de passe choisi à l'étape 2. Tapez ces commandes l'une après l'autre :
hostname répond lxc-test : le conteneur a son propre nom. ps -ef affiche une quinzaine de processus : /sbin/init (systemd) porte le numéro 1, et lance des services, comme cron, sshd ou postfix. C'est un Debian complet, qui démarre ses services comme une VM. On l'appelle un conteneur système. Aucun processus du nœud n'apparaît, alors que le nœud en exécute plusieurs centaines.
Notez la version affichée. Sélectionnez ensuite le nœud dans l'arborescence, onglet Summary, et lisez la ligne Kernel Version. C'est la même : le conteneur n'a pas de noyau à lui, il utilise celui du nœud.
Note
Depuis le Shell du nœud, pct exec 741 -- uname -r lance la même commande dans le conteneur, sans s'y connecter. Dans ce cours, on passe par la console du conteneur.
Étape 6 — Observer le conteneur¶
Ouvrez l'onglet Summary du conteneur. Relevez la mémoire utilisée (Memory usage) et l'espace occupé sur le disque (Bootdisk size). Le conteneur consomme quelques dizaines de Mo de mémoire, là où une VM Debian au repos en consomme plusieurs centaines. Vous le constaterez avec la VM de l'exercice 2.
Parcourez ensuite les onglets Resources, Network et Options : vous y retrouvez la plupart des réglages d'une VM, mais aucun matériel.
Étape 7 — Changer la mémoire à chaud¶
Dans la console du conteneur :
La colonne total de la ligne Mem: affiche environ 512.
Dans l'onglet Resources, double-cliquez sur Memory et remplacez 512 par 256. Validez. Revenez à la console, et tapez de nouveau free -m : le total est passé à 256. Le conteneur n'a pas redémarré, et votre session est toujours ouverte.
Pour une VM, une modification de la mémoire reste en général en attente, affichée en rouge dans l'onglet Hardware, jusqu'au prochain redémarrage : il faut changer le matériel virtuel. Pour un conteneur, il n'y a pas de matériel à changer. Proxmox demande seulement au noyau du nœud d'appliquer une nouvelle limite aux programmes du conteneur. Docker fait la même chose avec l'option --memory.
Étape 8 — Faire le ménage¶
Cliquez sur Shutdown, attendez l'arrêt, puis More › Remove. Cochez Destroy unreferenced disks owned by guest, tapez le CT ID pour confirmer, puis cliquez sur Remove.
Revenez à l'onglet CT Templates du stockage local : le template est toujours là. Supprimer un conteneur ne supprime pas son template, comme supprimer un conteneur Docker ne supprime pas son image.
Vérification finale¶
- Le template
debian-13-standardest présent sur le stockagelocaldu nœud - Vous avez mesuré la durée de la création et celle du démarrage dans le panneau Tasks
-
uname -rdans la console a affiché la même version que la ligne Kernel Version du nœud -
free -mest passé de 512 à 256 Mio sans redémarrage du conteneur - Le conteneur
741est supprimé, et le template est resté
Question 1¶
Vous créez trois conteneurs à partir du même template, et vous modifiez des fichiers dans le premier. Le template est-il modifié ? Les deux autres conteneurs voient-ils ces modifications ?
Voir la réponse
Non dans les deux cas. À la création, Proxmox extrait le template sur le disque **propre à chaque conteneur**. Le template n'est jamais modifié, et chaque conteneur a ses propres fichiers. C'est la même relation qu'entre une image Docker et ses conteneurs, que vous verrez à l'exercice 3.Question 2¶
Pourquoi le conteneur démarre-t-il en une ou deux secondes, alors qu'une VM met une minute ?
Voir la réponse
Le conteneur n'a pas de noyau à démarrer ni de matériel à détecter. Il utilise le noyau du nœud, qui tourne déjà. Démarrer le conteneur, c'est seulement lancer ses programmes dans un espace isolé. La contrepartie : un conteneur Linux ne peut exécuter que des programmes Linux, et une faille du noyau du nœud touche tous les conteneurs à la fois.Question 3¶
Ce conteneur LXC démarre un Debian complet, avec ses services, et on s'y connecte pour l'administrer. En quoi un conteneur Docker sera-t-il différent ?
Voir la réponse
Un conteneur LXC est un conteneur **système** : il fait tourner un système entier, qu'on entretient comme un petit serveur. Un conteneur Docker est un conteneur **applicatif** : il ne fait tourner qu'**un seul programme**, l'application, avec ses dépendances. On ne s'y connecte pas pour le mettre à jour : on le remplace par un nouveau conteneur, créé à partir d'une nouvelle image.En cas de problème¶
| Symptôme | Cause probable | Correction |
|---|---|---|
| La liste est vide à l'onglet Template de l'assistant | Le template n'est pas encore téléchargé | Le télécharger (étape 1), puis relancer Create CT |
CT ID 741 already in use |
Un conteneur ou une VM porte déjà ce numéro sur votre serveur | Supprimer l'ancien conteneur s'il vous appartient. Sinon, prévenir l'enseignant : le serveur est partagé avec l'autre groupe |
| La console reste noire après Start | La console s'est ouverte avant le démarrage | Appuyer sur Entrée dans la console |
| Remove est grisé | Le conteneur est encore en marche | Shutdown, puis attendre que l'icône devienne grise |
| La modification de la mémoire est refusée | Une autre tâche est en cours sur le conteneur | Attendre la fin de la tâche dans le panneau Tasks |











