Les conteneurs LXC (Linux Containers) sont une technologie de virtualisation légère qui permet d’exécuter plusieurs environnements Linux isolés sur un seul hôte. Dans cet article, nous allons explorer en détail comment installer, configurer et utiliser LXC sur un serveur Linux utilisant Debian ou Ubuntu.
Introduction à LXC
LXC est une technologie de conteneurisation qui offre un environnement proche d’une machine virtuelle, mais sans la surcharge d’un hyperviseur. Les conteneurs LXC partagent le noyau de l’hôte, ce qui les rend plus légers et plus rapides que les machines virtuelles traditionnelles.
Prérequis
Avant de commencer, assurez-vous que votre système est à jour :
sudo apt updatesudo apt upgradeInstallation de LXC
Installation des Paquets LXC
Pour installer LXC sur Debian ou Ubuntu, utilisez la commande suivante :
sudo apt install lxc lxcfs lxc-tools bridge-utils libpam-cgfs uidmap -yConfiguration du Réseau
LXC utilise un pont réseau pour permettre aux conteneurs de communiquer avec l’extérieur. Configurez un pont réseau en éditant le fichier /etc/default/lxc-net :
sudo nano /etc/default/lxc-netAssurez-vous que les lignes suivantes sont présentes et décommentées :
USE_LXC_BRIDGE="true"
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"
LXC_DHCP_CONFILE=""
Redémarrez le service LXC pour appliquer les modifications :
sudo systemctl restart lxc-netUtilisation de LXC
Création d’un Conteneur
Pour créer un nouveau conteneur LXC, utilisez la commande suivante. Vous serez invité à choisir la distribution, la version et l’architecture :
sudo lxc-create -n monconteneur -t downloadPar exemple, pour créer un conteneur Ubuntu 20.04, vous pouvez spécifier directement :
sudo lxc-create -n monconteneur -t download -- --dist ubuntu --release focal --arch amd64Démarrage et Arrêt d’un Conteneur
Pour démarrer un conteneur en arrière-plan :
sudo lxc-start -n monconteneur -dPour arrêter un conteneur :
sudo lxc-stop -n monconteneurAccès à un Conteneur
Pour accéder à un conteneur en cours d’exécution et obtenir un shell interactif :
sudo lxc-attach -n monconteneurConfiguration du Réseau pour un Conteneur
Pour configurer le réseau d’un conteneur, éditez son fichier de configuration :
sudo nano /var/lib/lxc/monconteneur/configAjoutez ou modifiez les lignes suivantes pour configurer le réseau :
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx
Configuration des Ressources
Vous pouvez limiter les ressources système allouées à un conteneur. Par exemple, pour limiter la mémoire et le CPU :
lxc.cgroup.memory.limit_in_bytes = 512Mlxc.cgroup.cpu.shares = 512Sauvegarde et Restauration
Pour sauvegarder un conteneur, arrêtez-le d’abord, puis créez une archive :
sudo lxc-stop -n monconteneursudo tar -czvf monconteneur_backup.tar.gz -C /var/lib/lxc/ monconteneurPour restaurer un conteneur à partir d’une sauvegarde :
sudo tar -xzvf monconteneur_backup.tar.gz -C /var/lib/lxc/Clonage d’un Conteneur
Pour cloner un conteneur existant, utilisez la commande suivante :
sudo lxc-clone -o monconteneur -n monconteneur_cloneConfiguration Avancée
Configuration des Points de Montage
Vous pouvez monter des répertoires de l’hôte dans le conteneur en ajoutant des lignes de configuration pour les points de montage :
lxc.mount.entry = /chemin/hote chemin/conteneur none bind 0 0Configuration des Variables d’Environnement
Pour définir des variables d’environnement dans un conteneur, ajoutez :
lxc.environment = VARIABLE=valeurConfiguration des Capacités
Vous pouvez ajuster les capacités du conteneur pour des raisons de sécurité :
lxc.cap.drop = sys_module mac_admin mac_override sys_timeSurveillance et Maintenance
Vérification de l’État des Conteneurs
Pour lister tous les conteneurs et leur état :
sudo lxc-ls --fancyMise à Jour des Conteneurs
Pour mettre à jour les paquets dans un conteneur, accédez au conteneur et utilisez les commandes de gestion de paquets appropriées :
sudo lxc-attach -n monconteneurapt updateapt upgradeexitJournalisation
Pour consulter les logs d’un conteneur spécifique :
sudo lxc-info -n monconteneur -sHlConfiguration du Bridge sur l’Hôte
Avant de configurer les conteneurs, assurez-vous que le pont réseau est correctement configuré sur l’hôte.
-
Installer le paquet bridge-utils (si ce n’est pas déjà fait) :
sudo apt install bridge-utils -
Configurer le pont réseau :
Vous pouvez configurer un pont réseau en éditant le fichier
/etc/network/interfacesou en utilisantnetplan, selon votre version d’Ubuntu ou Debian.Avec
/etc/network/interfaces:# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual # Bridge setup auto br0 iface br0 inet static bridge_ports eth0 address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254Redémarrez le service réseau pour appliquer les modifications :
sudo systemctl restart networking
Configuration des Conteneurs LXC avec des IP Statiques
Pour configurer un conteneur LXC avec une adresse IP statique, vous devez éditer le fichier de configuration du conteneur.
-
Créer un conteneur (si ce n’est pas déjà fait) :
sudo lxc-create -n monconteneur -t download -- --dist ubuntu --release focal --arch amd64 -
Configurer le réseau du conteneur :
Éditez le fichier de configuration du conteneur situé dans
/var/lib/lxc/monconteneur/config:sudo nano /var/lib/lxc/monconteneur/configAjoutez ou modifiez les lignes suivantes pour configurer une adresse IP statique :
# Network configuration lxc.network.type = veth lxc.network.link = br0 lxc.network.flags = up lxc.network.hwaddr = 00:16:3e:xx:xx:xx lxc.network.ipv4 = 192.168.1.10/24 lxc.network.ipv4.gateway = 192.168.1.254Remplacez
192.168.1.10par l’adresse IP statique que vous souhaitez attribuer au conteneur et192.168.1.254par l’adresse de la passerelle de votre réseau. -
Démarrer le conteneur :
sudo lxc-start -n monconteneur -d -
Accéder au conteneur et configurer l’interface réseau :
Accédez au conteneur et configurez manuellement l’interface réseau si nécessaire :
sudo lxc-attach -n monconteneurÉditez le fichier de configuration réseau du conteneur, par exemple
/etc/netplan/01-netcfg.yamlpour les systèmes utilisant Netplan :network: version: 2 ethernets: eth0: addresses: [192.168.1.10/24] gateway4: 192.168.1.254 nameservers: addresses: [8.8.8.8, 8.8.4.4]Appliquez la configuration :
sudo netplan apply
Exemple de Configuration avec Plusieurs Conteneurs
Si vous avez plusieurs conteneurs, vous pouvez attribuer une adresse IP statique à chacun en suivant le même processus. Par exemple, pour un deuxième conteneur :
# Network configuration for second container
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:yy:yy:yy
lxc.network.ipv4 = 192.168.1.11/24
lxc.network.ipv4.gateway = 192.168.1.254
En suivant ces étapes, vous pouvez configurer un réseau en mode bridge sur votre hôte et attribuer des adresses IP statiques à vos conteneurs LXC, assurant ainsi une connectivité réseau stable et prévisible
Conclusion
Les conteneurs LXC offrent une solution légère et efficace pour la virtualisation au niveau du système d’exploitation. En suivant les étapes et exemples détaillés dans cet article, vous pouvez installer, configurer et utiliser LXC sur un serveur Linux utilisant Debian ou Ubuntu. Les conteneurs LXC sont particulièrement utiles pour créer des environnements isolés et sécurisés pour le développement, les tests et la production.
N’oubliez pas de consulter la documentation officielle de LXC pour plus de détails et d’options de configuration avancées. Avec LXC, vous pouvez créer des solutions de conteneurisation robustes et flexibles pour vos besoins en virtualisation.