Présentation du projet
Ce projet consiste à créer un conteneur LXC (Linux Containers) dans Proxmox VE. Les conteneurs LXC offrent une virtualisation légère au niveau du système d’exploitation, partageant le noyau de l’hôte pour de meilleures performances.
Objectifs
- Comprendre les conteneurs LXC vs machines virtuelles
- Créer un conteneur depuis un template
- Configurer les ressources et le réseau
- Gérer le cycle de vie du conteneur
- Comprendre les avantages et limitations des LXC
- Déployer une application dans le conteneur
Contexte technique
Problématique
Les machines virtuelles consomment beaucoup de ressources :
- RAM : OS complet requis
- CPU : overhead de virtualisation
- Stockage : espace disque important
- Démarrage : plus lent (boot OS complet)
Solution mise en œuvre
Les conteneurs LXC offrent :
- Légèreté : pas d’OS complet, partage du noyau
- Démarrage rapide : < 5 secondes
- Densité élevée : plus de conteneurs que de VM sur le même matériel
- Performances : quasi-natives (pas d’hyperviseur)
- Isolation : sécurisée au niveau du noyau
Réalisation technique
LXC vs VM : Comparaison
| Aspect | LXC Container | VM (KVM/QEMU) |
|---|---|---|
| Noyau | Partagé avec l’hôte | Propre noyau |
| RAM | 512 MB suffit | 1-2 GB minimum |
| Démarrage | 3-5 secondes | 30-60 secondes |
| Stockage | < 500 MB | 8-20 GB |
| Performance | ~Native | 5-10% overhead |
| Isolation | Niveau OS | Niveau matériel |
| OS supporté | Linux uniquement | Tous OS |
Création du conteneur LXC
Méthode via l’interface web Proxmox :
Télécharger un template :
PLAINTEXTStockage local > CT Templates > Templates Sélectionner : debian-12-standard TéléchargerCréer le conteneur :
PLAINTEXTBouton "Create CT" (en haut à droite)Configuration générale :
PLAINTEXTNode: pve (serveur Proxmox) CT ID: 100 (identifiant unique) Hostname: web-container Password: [mot de passe root sécurisé] SSH public key: [optionnel]Template :
PLAINTEXTStorage: local Template: debian-12-standardDisque :
STORAGE:Disk size: 8 GBCPU :
PLAINTEXTCores: 2Mémoire :
PLAINTEXTMemory: 1024 MB Swap: 512 MBRéseau :
PLAINTEXTBridge: vmbr0 IPv4: DHCP (ou statique) IPv6: auto (ou disabled)DNS :
PLAINTEXTUse host settings: ✓Création :
PLAINTEXTCliquer sur "Finish"
Démarrage et configuration
Démarrer le conteneur :
# Via l'interface : bouton "Start"
# Ou via CLI sur l'hôte Proxmox
pct start 100Se connecter au conteneur :
# Via console web : bouton "Console"
# Ou via CLI
pct enter 100
# Ou SSH (après config réseau)
ssh root@IP_CONTAINERConfiguration initiale du conteneur :
# Mise à jour du système
apt update && apt upgrade -y
# Installation d'outils de base
apt install -y curl wget vim htop net-tools
# Configuration du fuseau horaire
timedatectl set-timezone Europe/Paris
# Vérification
hostnamectlDéploiement d’une application (exemple: Nginx)
# Installation de Nginx
apt install -y nginx
# Démarrage et activation
systemctl start nginx
systemctl enable nginx
# Vérification
systemctl status nginx
# Test depuis un autre serveur
curl http://IP_CONTAINERConfiguration réseau avancée
IP statique (modif depuis Proxmox CLI) :
# Éditer la config du conteneur
pct set 100 -net0 name=eth0,bridge=vmbr0,ip=192.168.1.50/24,gw=192.168.1.1
# Redémarrer le conteneur
pct reboot 100Depuis le conteneur :
# Éditer /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
gateway 192.168.1.1
# Redémarrer le réseau
systemctl restart networkingRésultats obtenus
✅ Conteneur LXC créé et opérationnel
✅ Ressources configurées et optimisées
✅ Réseau configuré (DHCP/statique)
✅ Application Nginx déployée
✅ Démarrage rapide (< 5 secondes)
✅ Consommation mémoire réduite (200-300 MB)
✅ Performances quasi-natives
Compétences développées
- Création et gestion de conteneurs LXC
- Administration Proxmox VE
- Configuration réseau de conteneurs
- Optimisation des ressources
- Déploiement d’applications containerisées
- Compréhension de la virtualisation légère
Commandes Proxmox utiles (CLI)
# Lister tous les conteneurs
pct list
# Voir les détails d'un conteneur
pct config 100
# Démarrer/Arrêter/Redémarrer
pct start 100
pct stop 100
pct reboot 100
# Entrer dans le conteneur
pct enter 100
# Exécuter une commande
pct exec 100 -- ls -la /
# Modifier les ressources à chaud
pct set 100 -memory 2048 -cores 4
# Snapshot (sauvegarde état)
pct snapshot 100 pre-upgrade
# Restaurer un snapshot
pct rollback 100 pre-upgrade
# Cloner un conteneur
pct clone 100 101 --hostname web-container-2
# Migrer vers un autre nœud (cluster)
pct migrate 100 pve2
# Supprimer un conteneur
pct destroy 100Gestion du stockage
Voir l’utilisation disque :
# Depuis l'hôte Proxmox
pct df 100
# Depuis le conteneur
df -h
du -sh /*Redimensionner le disque :
# Augmenter la taille du disque (depuis Proxmox)
pct resize 100 rootfs +4G # Ajoute 4 GB
# Le système de fichiers s'ajuste automatiquementSauvegardes
Créer un backup :
# Depuis l'interface web
Datacenter > Backup > Create Backup
# Depuis CLI
vzdump 100 --compress zstd --mode snapshot --storage backup-storageRestaurer un backup :
# Interface web : Storage > Backups > Restore
# CLI
pzrestore /path/to/backup/vzdump-lxc-100.tar.zst 100Avantages des LXC
✅ Performance : pas d’émulation matérielle
✅ Densité : plus de conteneurs sur même hardware
✅ Rapidité : démarrage instantané
✅ Efficacité : moins de RAM et CPU utilisés
✅ Facilité : templates prêts à l’emploi
✅ Flexibilité : ressources modifiables à chaud
Limitations des LXC
⚠️ Linux uniquement : pas de Windows ou BSD
⚠️ Noyau partagé : version identique à l’hôte
⚠️ Isolation moindre : moins sécurisé qu’une VM
⚠️ Modules noyau : chargés globalement (hôte)
⚠️ Pas de migration live entre versions Proxmox différentes
Points clés d’apprentissage
- LXC utilise les namespaces et cgroups du noyau Linux pour l’isolation
- Les conteneurs partagent le même noyau que l’hôte Proxmox
- Les templates sont des images pré-configurées (Debian, Ubuntu, Alpine, etc.)
- Les conteneurs peuvent être privilégiés (root=root) ou non privilégiés (plus sécurisé)
- Proxmox gère LXC via pct (Proxmox Container Toolkit)
- Les snapshots LXC sont instantanés (copy-on-write avec ZFS/LVM)
Cas d’usage LXC vs VM
Utiliser LXC pour :
- Serveurs web (Nginx, Apache)
- Serveurs d’applications (Node.js, Python)
- Services réseau légers (DNS, DHCP)
- Environnements de développement Linux
- Microservices
Utiliser VM pour :
- Systèmes Windows
- Noyaux Linux spécifiques
- Applications nécessitant modules noyau custom
- Isolation maximale (sécurité)
- Compatibilité maximale
Configuration avancée
Monter un point de montage depuis l’hôte :
# Depuis Proxmox
pct set 100 -mp0 /mnt/shared,mp=/mnt/data
# Accès depuis le conteneur
ls /mnt/dataConteneur non privilégié (plus sécurisé) :
# Lors de la création, cocher "Unprivileged container"
# Le root du conteneur n'est pas le root de l'hôtePerspectives d’amélioration
- Mise en place de conteneurs non privilégiés pour sécurité
- Automatisation de création avec cloud-init
- Configuration de montages bind pour partage de données
- Mise en place de backups automatiques
- Migration vers cluster Proxmox pour haute disponibilité
- Intégration avec Ansible pour déploiement automatisé
- Monitoring des ressources avec Telegraf/Prometheus