Skip to main content

🐳 Installer Docker dans un conteneur LXC Proxmox

Cette procédure décrit l'installation complète de Docker Engine dans un conteneur LXC hébergé sur Proxmox VE.

Elle est destinée aux services de la plateforme tels que Bitwarden, Docker Registry, Harbor, AdGuard Home ou tout autre service reposant sur Docker Compose.


🎯 Objectif

À l'issue de cette procédure, le conteneur disposera :

  • de Docker Engine ;
  • du plugin Docker Compose ;
  • du service Docker démarré automatiquement ;
  • d'un environnement prêt à héberger des applications Docker.

📋 Prérequis

  • Cluster Proxmox opérationnel
  • Conteneur Ubuntu créé
  • Accès root au nœud Proxmox
  • Accès root au conteneur
  • Connexion Internet fonctionnelle

🧱 Étape 1 - Préparer le conteneur LXC

Docker nécessite des permissions supplémentaires pour fonctionner correctement dans un conteneur LXC.

Modifier la configuration du conteneur

Depuis l'hôte Proxmox :

nano /etc/pve/lxc/<ID>.conf

Ajouter les paramètres suivants :

features: nesting=1
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.cap.drop:

Remplacer <ID> par l'identifiant du conteneur.


🔄 Étape 2 - Redémarrer le conteneur

pct restart <ID>

🔐 Étape 3 - Se connecter au conteneur

pct exec <ID> -- bash

📦 Étape 4 - Installer les dépendances

apt update
apt upgrade -y

apt install -y \
ca-certificates \
curl \
gnupg

🔑 Étape 5 - Ajouter la clé GPG Docker

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg

chmod a+r /etc/apt/keyrings/docker.gpg

📚 Étape 6 - Ajouter le dépôt Docker

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null

⬇️ Étape 7 - Installer Docker

apt update

apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin

▶️ Étape 8 - Activer le service Docker

systemctl enable docker
systemctl start docker

✅ Étape 9 - Vérifier l'installation

docker run hello-world

Si le conteneur hello-world s'exécute correctement, Docker est opérationnel.


👤 Étape 10 - Utiliser Docker sans sudo (optionnel)

usermod -aG docker $USER

Fermer puis rouvrir la session utilisateur.


🔍 Vérifications

Version de Docker

docker version

Informations système

docker info

Version de Docker Compose

docker compose version

🚨 Dépannage

Problème Solution
Docker ne démarre pas Vérifier les paramètres LXC puis redémarrer le conteneur.
Erreur AppArmor Contrôler lxc.apparmor.profile: unconfined.
Erreur cgroups Contrôler features: nesting=1.
Problème réseau Vérifier la configuration réseau du LXC.
Diagnostic système journalctl -u docker

⚠️ Limitations des conteneurs LXC

  • Les conteneurs non privilégiés peuvent rencontrer des limitations avec Docker.
  • Certaines fonctionnalités liées aux cgroups ou à OverlayFS peuvent ne pas être disponibles.
  • Pour les charges de travail importantes, une machine virtuelle reste la solution recommandée.

💡 Bonnes pratiques

  • Utiliser Docker Compose pour tous les services.
  • Stocker les stacks dans /opt/docker-<service>.
  • Versionner tous les fichiers docker-compose.yml.
  • Utiliser le registre privé de la plateforme.
  • Installer Node Exporter sur les hôtes Docker afin de superviser les ressources.
  • Prévoir les sauvegardes des volumes persistants.

📚 Voir également

  • Docker Cheat Sheet
  • Docker Registry
  • Harbor
  • Monitoring des hôtes Docker
  • Sauvegarde des volumes Docker

```