Création d'un container dans Proxmox

Création et configuration d'un conteneur Linux LXC dans Proxmox, offrant une alternative légère aux machines virtuelles pour les applications Linux.
Publié le
Statut
Terminé

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

AspectLXC ContainerVM (KVM/QEMU)
NoyauPartagé avec l’hôtePropre noyau
RAM512 MB suffit1-2 GB minimum
Démarrage3-5 secondes30-60 secondes
Stockage< 500 MB8-20 GB
Performance~Native5-10% overhead
IsolationNiveau OSNiveau matériel
OS supportéLinux uniquementTous OS

Création du conteneur LXC

Méthode via l’interface web Proxmox :

  1. Télécharger un template :

    PLAINTEXT
    Stockage local > CT Templates > Templates
    Sélectionner : debian-12-standard
    Télécharger
    Cliquez pour développer et voir plus
  2. Créer le conteneur :

    PLAINTEXT
    Bouton "Create CT" (en haut à droite)
    Cliquez pour développer et voir plus
  3. Configuration générale :

    PLAINTEXT
    Node: pve (serveur Proxmox)
    CT ID: 100 (identifiant unique)
    Hostname: web-container
    Password: [mot de passe root sécurisé]
    SSH public key: [optionnel]
    Cliquez pour développer et voir plus
  4. Template :

    PLAINTEXT
    Storage: local
    Template: debian-12-standard
    Cliquez pour développer et voir plus
  5. Disque :

    STORAGE:
    Disk size: 8 GB
    Cliquez pour développer et voir plus
  6. CPU :

    PLAINTEXT
    Cores: 2
    Cliquez pour développer et voir plus
  7. Mémoire :

    PLAINTEXT
    Memory: 1024 MB
    Swap: 512 MB
    Cliquez pour développer et voir plus
  8. Réseau :

    PLAINTEXT
    Bridge: vmbr0
    IPv4: DHCP (ou statique)
    IPv6: auto (ou disabled)
    Cliquez pour développer et voir plus
  9. DNS :

    PLAINTEXT
    Use host settings: ✓
    Cliquez pour développer et voir plus
  10. Création :

    PLAINTEXT
    Cliquer sur "Finish"
    Cliquez pour développer et voir plus

Démarrage et configuration

Démarrer le conteneur :

BASH
# Via l'interface : bouton "Start"

# Ou via CLI sur l'hôte Proxmox
pct start 100
Cliquez pour développer et voir plus

Se connecter au conteneur :

BASH
# Via console web : bouton "Console"

# Ou via CLI
pct enter 100

# Ou SSH (après config réseau)
ssh root@IP_CONTAINER
Cliquez pour développer et voir plus

Configuration initiale du conteneur :

BASH
# 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
hostnamectl
Cliquez pour développer et voir plus

Déploiement d’une application (exemple: Nginx)

BASH
# 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_CONTAINER
Cliquez pour développer et voir plus

Configuration réseau avancée

IP statique (modif depuis Proxmox CLI) :

BASH
# É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 100
Cliquez pour développer et voir plus

Depuis le conteneur :

BASH
# É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 networking
Cliquez pour développer et voir plus

Ré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)

BASH
# 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 100
Cliquez pour développer et voir plus

Gestion du stockage

Voir l’utilisation disque :

BASH
# Depuis l'hôte Proxmox
pct df 100

# Depuis le conteneur
df -h
du -sh /*
Cliquez pour développer et voir plus

Redimensionner le disque :

BASH
# Augmenter la taille du disque (depuis Proxmox)
pct resize 100 rootfs +4G  # Ajoute 4 GB

# Le système de fichiers s'ajuste automatiquement
Cliquez pour développer et voir plus

Sauvegardes

Créer un backup :

BASH
# Depuis l'interface web
Datacenter > Backup > Create Backup

# Depuis CLI
vzdump 100 --compress zstd --mode snapshot --storage backup-storage
Cliquez pour développer et voir plus

Restaurer un backup :

BASH
# Interface web : Storage > Backups > Restore

# CLI
pzrestore /path/to/backup/vzdump-lxc-100.tar.zst 100
Cliquez pour développer et voir plus

Avantages 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 :

BASH
# Depuis Proxmox
pct set 100 -mp0 /mnt/shared,mp=/mnt/data

# Accès depuis le conteneur
ls /mnt/data
Cliquez pour développer et voir plus

Conteneur non privilégié (plus sécurisé) :

BASH
# Lors de la création, cocher "Unprivileged container"
# Le root du conteneur n'est pas le root de l'hôte
Cliquez pour développer et voir plus

Perspectives 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

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci