Comment installer Docker sur Debian 12 ?
Installer le moteur Docker depuis le dépôt officiel et vérifier l’installation avec hello-world. Évitez les scripts copiés depuis une source inconnue.
Utilisez le dépôt officiel de Docker pour recevoir les versions maintenues. Évitez les scripts copiés depuis une source inconnue.
Procédure étape par étape
-
Préparer le système
Mettez Debian à jour et installez les outils de dépôt et certificats.
-
Ajouter la clé Docker
Téléchargez la clé officielle dans /etc/apt/keyrings puis ajoutez le dépôt Docker aux sources APT de Debian.
-
Installer le moteur Docker
Installez Docker Engine, le plugin Buildx et Docker Compose.
-
Tester l’installation
Exécutez docker run --rm hello-world puis vérifiez que le service se lance au démarrage du système.
Installation rapide officielle
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker run --rm hello-world
Limiter la taille des journaux
cat > /etc/docker/daemon.json <<'EOF'
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
EOF
systemctl restart docker
docker info --format '{{.LoggingDriver}}'
Avant de commencer
Connectez-vous avec ssh root@IP, en remplaçant IP par l’adresse IPv4 affichée dans « Mes services » > votre VPS. Le mot de passe initial vous est envoyé par e-mail à la livraison. Les commandes de ce guide sont lancées en root ; avec un autre compte, ajoutez sudo devant chacune.
- Vérifiez le système avec cat /etc/os-release : le dépôt Docker utilise le nom de code de Debian, bookworm pour Debian 12 et trixie pour Debian 13.
- Retirez les anciens paquets non officiels s’ils sont présents : apt remove docker.io docker-compose podman-docker containerd runc. Ils entrent en conflit avec ceux du dépôt Docker.
- Le script officiel curl -fsSL https://get.docker.com | sh installe les mêmes paquets en une commande. Il convient à un test rapide ; pour un serveur suivi dans la durée, le dépôt APT montre clairement ce qui est installé.
Vérifier que tout fonctionne
docker run --rm hello-world doit afficher Hello from Docker!. Contrôlez ensuite ces deux points :
- systemctl is-enabled docker répond enabled : Docker redémarrera avec le VPS.
- docker compose version affiche la version du plugin Compose. La commande s’écrit avec un espace.
Bonnes pratiques
Docker écrit ses propres règles iptables, appliquées avant celles d’UFW. Un port publié avec -p 8080:80 reste donc joignable depuis Internet même si UFW le bloque. Pour un service qui ne doit être vu que par un proxy inverse installé sur le même VPS, publiez-le sur 127.0.0.1:8080:80.
Sans limite, les journaux des conteneurs grossissent jusqu’à remplir le disque. Le réglage ci-dessous s’applique aux conteneurs créés après le redémarrage de Docker.
Questions fréquentes
Que faire si apt affiche E: Could not get lock /var/lib/dpkg/lock-frontend ?
Une autre opération APT est en cours, souvent les mises à jour automatiques lancées au premier démarrage du VPS. Attendez quelques minutes, vérifiez avec ps aux | grep -E 'apt|dpkg', puis relancez la commande. Ne supprimez pas le fichier de verrou : vous risquez de corrompre la base des paquets.
Pourquoi permission denied while trying to connect to the Docker daemon socket ?
Vous utilisez un compte qui n’est pas root et qui n’appartient pas au groupe docker. Ajoutez-le avec usermod -aG docker deploy en remplaçant deploy par son nom, puis fermez et rouvrez la session SSH. Ce groupe donne des droits équivalents à root sur le VPS : ne l’accordez qu’à des comptes de confiance.
Que signifie Cannot connect to the Docker daemon at unix:///var/run/docker.sock ?
Le service Docker est arrêté ou n’a pas réussi à démarrer. Lancez systemctl start docker, puis lisez journalctl -u docker -n 50 si l’erreur revient. Un fichier /etc/docker/daemon.json mal formé, par exemple avec une virgule en trop, suffit à bloquer le démarrage.
Pourquoi docker-compose: command not found ?
Le dépôt officiel installe Compose comme plugin de Docker, pas comme programme séparé. Remplacez docker-compose up -d par docker compose up -d dans vos commandes et vos scripts.