🐳 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 
 
 ```