Installation et Configuration des Conteneurs LXC sur Linux

18 juin 2025 — par admin_libra

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 update
sudo apt upgrade

Installation 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 -y

Configuration 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-net

Assurez-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-net

Utilisation 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 download

Par 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 amd64

Démarrage et Arrêt d’un Conteneur

Pour démarrer un conteneur en arrière-plan :

sudo lxc-start -n monconteneur -d

Pour arrêter un conteneur :

sudo lxc-stop -n monconteneur

Accès à un Conteneur

Pour accéder à un conteneur en cours d’exécution et obtenir un shell interactif :

sudo lxc-attach -n monconteneur

 

Configuration 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/config

Ajoutez 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 = 512M
lxc.cgroup.cpu.shares = 512

Sauvegarde et Restauration

Pour sauvegarder un conteneur, arrêtez-le d’abord, puis créez une archive :

sudo lxc-stop -n monconteneur
sudo tar -czvf monconteneur_backup.tar.gz -C /var/lib/lxc/ monconteneur

Pour 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_clone

Configuration 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 0

Configuration des Variables d’Environnement

Pour définir des variables d’environnement dans un conteneur, ajoutez :

lxc.environment = VARIABLE=valeur

 

Configuration 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_time

Surveillance et Maintenance

Vérification de l’État des Conteneurs

Pour lister tous les conteneurs et leur état :

sudo lxc-ls --fancy

Mise à 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 monconteneur
apt update
apt upgrade
exit

Journalisation

Pour consulter les logs d’un conteneur spécifique :

sudo lxc-info -n monconteneur -sHl

Configuration 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.

  1. Installer le paquet bridge-utils (si ce n’est pas déjà fait) :

    sudo apt install bridge-utils
  2. Configurer le pont réseau :

    Vous pouvez configurer un pont réseau en éditant le fichier /etc/network/interfaces ou en utilisant netplan, 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.254

    Redé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.

  1. 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
  2. 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/config

    Ajoutez 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.254

    Remplacez 192.168.1.10 par l’adresse IP statique que vous souhaitez attribuer au conteneur et 192.168.1.254 par l’adresse de la passerelle de votre réseau.

  3. Démarrer le conteneur :

    sudo lxc-start -n monconteneur -d
  4. 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.yaml pour 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.

Index complet

Tous les articles (48)

Date Article Tags
30/06/2026 PHP : gérer plusieurs versions PHP-FPM avec les dépôts Sury sur Debian/Ubuntu administration apache debian 22/06/2026 OS : Cycle de vie LTS et mise à jour des distributions — apt dist-upgrade et do-release-upgrade sous Debian / Ubuntu apt cycle-de-vie debian 17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs