Proxmox VE 7.0 est un hyperviseur permettant de créer et gérer des machines virtuelles. Il propose également une interface de gestion de conteneurs LXC pour installer des distributions en quelques clics, ainsi que des outils clé en main comme EtherPad, Ghost ou WordPress.
Ces dernières années, la virtualisation pure et dure s'est vu opposer une nouvelle façon de gérer plusieurs systèmes au sein d'un même machine à travers les conteneurs. La différence d'approche est simple.
Dans le premier cas, l'hôte dispose d'un hyperviseur lui permettant de partager les ressources matérielles entre des machines virtuelles qui agiront comme autant de systèmes indépendants, chacun disposant de son OS avec sa propre couche logicielle. Dans le cas des conteneurs, l'OS du système hôte sert de base de travail, partageant son noyau. On y déploie simplement des couches logicielles différentes :

L'intérêt est que l'on préserve un certain niveau d'isolation entre elles avec une flexibilité d'usage (on peut déployer et détruire facilement un conteneur), sans subir le « coût » de la virtualisation complète d'une machine avec son OS. Notamment pour ce qui est de l'espace de stockage occupé ou la « lourdeur » de l'hyperviseur.
On a cependant une plus grande dépendance au système de l'hôte. Ainsi, n'espérez pas utiliser une application Windows dans un conteneur Linux et inversement. C'est pour cela que Docker passe par le sous-système Linux (WSL) v2 de Windows 10/11 pour fonctionner : il dispose de son propre noyau Linux.
Ce dernier fournit nativement des fonctions dédiées à l'isolation, comme les espaces de nom pour les processus et les cgroups pour l'accès aux ressources matérielles. Cette solution n'a rien de nouveau dans l'écosystème Unix. On pouvait isoler des processus depuis chroot dès le début des années 80. BSD a renforcé cette possibilité à travers ses Jails 20 ans plus tard. Sous Linux, on pense à des outils récents comme Docker (2013), mais il n'était au départ qu'une extension des LinuX Containers (LXC) introduits en 2008, un projet désormais maintenu par Canonical (Ubuntu).
Comme nous l'avons vu dans notre introduction à Proxmox VE 7.0, ce dernier dispose d'une interface graphique permettant de gérer de tels conteneurs. Voici comment en tirer parti en pratique.
Notre dossier sur Promox VE 7.0 :
- Proxmox VE 7.0 : installation sur un serveur et création d'une machine virtuelle
- Linux Containers (LXC) dans Proxmox VE 7.0 : installez simplement des distributions et services
Récupération des templates
Nous partirons du principe que vous disposez d'un serveur à jour fonctionnant sous Proxmox VE 7.0. Connectez-vous et rendez-vous dans l'un de vos espaces de stockage dans le menu de gauche. Vous verrez plusieurs onglets apparaître, cliquez sur celui nommé CT Templates.
Comme leur nom l'indique, il s'agit de modèles permettant de créer différents types de conteneurs. Ici, plusieurs choix s'offrent à vous : en uploader un depuis votre machine, depuis une URL ou utiliser l'un de ceux proposés par Proxmox. Nous opterons pour ce dernier en cliquant sur Templates afin d'afficher la liste :
Comme on peut le voir, ils sont rangés en trois sections. Tout d'abord Mail pour installer la Mail Gateway de Proxmox. Puis System qui fournit des modèles pour une vingtaine de distributions Linux, d'Alpine à Ubuntu en passant par ArchLinux, CentOS, Debian, Devuan, Fedora, Gentoo ou OpenSUSE, toutes en plusieurs versions.
Enfin, on a droit à une centaine de services issus du hub de Turnkey Linux, dont Drupal, Etherpad, GitLab, GNU Social, Ghost, Matomo, MediaWiki, NextCloud, Nginx, OwnCloud, OSCommerce, PostgreSQL, Wireguard ou Wordpress. Sélectionnez celui de votre choix et cliquez sur Download. Nous utiliserons Debian 11 et EtherPad.
Notez que la gestion peut aussi se faire en lignes de commandes, par exemple pour afficher la liste :
pveam available
pveam available --section system
Ou même télécharger un template dans l'espace de stockage de votre choix (local-btrfs
dans notre cas) :
pveam download local-btrfs debian-10-turnkey-etherpad_16.1-1_amd64.tar.gz
Vous pouvez ensuite créer un conteneur de la sorte, la liste complète des commandes se trouve ici.
Création du conteneur
Nous continuerons via l'interface graphique. Elle propose un chemin similaire à la création d'une machine virtuelle, mais avec des choix allégés. On sélectionne la quantité de cœurs CPU, de mémoire, de Go de stockage, mais pas la manière dont ils sont interfacés. Pareil pour le réseau où les choix se limitent à des éléments comme le DHCP et le DNS.
Autre différence notable, la nécessité de choisir pendant la première étape un nom (hostname) et une méthode de protection de l'accès au système du conteneur, mot de passe ou clé publique (OpenSSH). La raison est simple : une fois le conteneur créé, il n'y a pas de phase d'installation à gérer. Comme une instance cloud, tout est automatiquement configuré et fonctionnel en quelques secondes, on peut s'y connecter via la Console ou SSH.
À l'instar d'une machine virtuelle, on dispose d'un onglet Summary qui indique le statut des « composants », on peut modifier l'attribution des ressources ou les paramètres réseau, certaines options, les permissions d'accès, gérer la réplication ou la sauvegarde, créer des instantanés. La liste est simplement plus courte.
Utiliser des conteneurs LXC plutôt que des machines virtuelles permet ainsi d'économiser du temps et des ressources, au prix d'une flexibilité moindre. Vous devrez donc choisir au cas par cas, selon vos besoins.
Accès web et espace utilisé
Si vous créez un second conteneur pour Etherpad, le service sera accessible dès la fin de la procédure via une interface web, à l'adresse correspondant au nom donné à la machine :
https://hostname
Pensez tout de même à vous y connecter en SSH ou via la Console pour la mettre à jour et répondre à quelques questions pour configurer des paramètres de base.
Pour les deux conteneurs, le système installé est réduit. Debian 11 utilisait 732 Mo de l'espace de stockage attribué, contre 1,8 Go dans le cas d'Etherpad. En passant par l'installation complète de Debian 11 dans une machine virtuelle, l'espace occupé par le système (sans interface graphique) est de 1,1 Go.
Les templates occupent, eux, respectivement 233 Mo et 447 Mo d'espace, bien moins que la plupart des images ISO (hors netinstall). C'est aussi pour cela que les conteneurs Alpine Linux sont très appréciés, son template LXC nécessite à peine 2,5 Mo. Après création du conteneur, l'espace occupé par le système est de... 8,8 Mo.