Tutoriel Linux

Docker sur Debian : les vérifications à faire avant de lancer l’installation

Débutant6 min de lecture

Installer Docker sur Debian n’est pas compliqué. Le piège, c’est plutôt de le faire trop vite, avec un vieux paquet docker.io, un dépôt mal déclaré ou un serveur dont le pare-feu n’a pas été relu.

Dans mon cas, je préfère toujours vérifier la base avant de lancer l’installation : version de Debian, architecture, paquets en conflit, service Docker, groupe utilisateur et test hello-world. Vous évitez ainsi une installation qui fonctionne à moitié, ou pire, un conteneur qui expose un port alors que vous pensiez encore être protégé par UFW.

Tux vérifie un serveur Debian avec Docker avant l’installation
Avant d’installer Docker sur Debian, vérifiez la version, le dépôt et les ports exposés.

Vérifiez d’abord la version de Debian

Docker Engine est documenté pour Debian 13, Debian 12 et Debian 11. Avant de copier une commande trouvée dans un coin, commencez par identifier clairement la machine. C’est surtout important si vous administrez un serveur ancien, une VM clonée ou une distribution dérivée.

cat /etc/os-release
cat /etc/debian_version
uname -m
dpkg --print-architecture

Le dépôt Docker utilise le nom de code Debian, par exemple bookworm ou trixie. Si VERSION_CODENAME est vide, ou si vous êtes sur une distribution dérivée, ne continuez pas au hasard. Remplacez le nom de code manuellement par celui de la base Debian réellement utilisée.

Si vous avez un doute sur ce point, relisez aussi le guide LinuxEnCaja sur les commandes fiables pour vérifier la version de Debian. C’est exactement le genre de contrôle qui évite les dépôts APT incohérents.

Supprimez les anciens paquets qui peuvent gêner

Sur Debian, le paquet docker.io peut exister dans les dépôts de la distribution. Il n’a pas le même cycle que les paquets officiels Docker. Si votre objectif est d’installer Docker Engine depuis le dépôt officiel, nettoyez d’abord les paquets qui peuvent entrer en conflit.

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)

Cette commande peut simplement répondre que rien n’est installé. Ce n’est pas un problème. En revanche, elle ne supprime pas vos anciens conteneurs, images, volumes et réseaux stockés sous /var/lib/docker. Ne touchez pas à ce dossier sans sauvegarde si la machine a déjà servi.

Ajoutez le dépôt officiel Docker proprement

La méthode propre passe par un fichier de sources APT dédié et une clé dans /etc/apt/keyrings. Je vous conseille d’éviter les vieux tutoriels qui ajoutent une clé avec apt-key. Ce n’est plus la bonne méthode.

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Ajoutez ensuite le dépôt Docker avec le nom de code Debian détecté par le système :

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update

Le contrôle simple après cette étape :

apt-cache policy docker-ce
grep -R "download.docker.com" /etc/apt/sources.list.d/

Vous devez voir le dépôt Docker dans les sources et un candidat docker-ce. Si APT ne voit rien, ne forcez pas l’installation. Corrigez d’abord le fichier docker.sources, le nom de code ou la connectivité réseau.

Installez Docker, puis contrôlez le service

L’installation de base se fait avec Docker Engine, le client, containerd, Buildx et le plugin Compose. C’est le paquet attendu aujourd’hui pour une installation Debian propre.

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

Ne vous arrêtez pas au message de fin d’APT. Vérifiez que le service est bien démarré :

sudo systemctl status docker --no-pager
systemctl is-active docker
sudo journalctl -u docker -b --no-pager | tail -n 40

Si le service ne démarre pas, commencez par les logs. C’est souvent plus parlant qu’un redémarrage répété. Pour relire les services actifs et les unités en erreur, l’article sur systemctl et la liste des services Linux complète bien cette vérification.

Testez avec hello-world, mais ne banalisez pas le groupe docker

Le test officiel reste simple :

sudo docker run hello-world

Si l’image se télécharge, s’exécute et affiche son message de confirmation, le moteur Docker fonctionne. Vous pouvez aussi vérifier les versions installées :

docker --version
docker compose version
sudo docker info

La tentation ensuite, c’est d’ajouter votre utilisateur au groupe docker pour éviter sudo. C’est pratique, mais ce n’est pas anodin : un utilisateur membre de ce groupe peut obtenir des privilèges très élevés via le démon Docker. Sur un poste de test, pourquoi pas. Sur un serveur partagé, je le ferais seulement pour un compte admin clairement identifié.

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

Si vous avez lancé Docker avec sudo avant de basculer dans le groupe, vous pouvez aussi tomber sur un problème de droits dans ~/.docker. Dans ce cas, corrigez le propriétaire plutôt que de lancer toutes les commandes au hasard :

sudo chown -R "$USER":"$USER" ~/.docker
chmod -R go-rwx ~/.docker

Relisez le pare-feu avant d’exposer un conteneur

C’est le point que je vérifierais vraiment avant de mettre Docker sur un serveur accessible depuis Internet. Docker manipule des règles réseau et les ports publiés par les conteneurs peuvent contourner ce que vous pensez avoir verrouillé avec UFW ou firewalld.

sudo ss -ltnp
sudo docker ps
sudo docker ps --format "table {{.Names}} {{.Ports}}"
sudo ufw status numbered

Si vous publiez un service, relisez la commande. -p 127.0.0.1:8080:80 n’a pas le même impact que -p 8080:80. Le premier limite l’écoute à la machine locale, le second expose le port sur les interfaces disponibles.

Pour un serveur Debian exposé, je vous conseille de relire aussi les règles UFW à poser avant d’ouvrir un serveur. Docker et le pare-feu doivent être pensés ensemble, pas chacun dans leur coin.

Les contrôles que je garde avant de valider

Avant de considérer l’installation terminée, je garde cette petite série de contrôles. Elle est courte, mais elle attrape la majorité des installations bancales :

  • cat /etc/os-release confirme la bonne base Debian.
  • apt-cache policy docker-ce pointe vers le dépôt Docker attendu.
  • sudo systemctl status docker --no-pager ne remonte pas d’erreur.
  • sudo docker run hello-world fonctionne au moins une fois.
  • docker compose version répond si vous comptez utiliser Compose.
  • sudo ss -ltnp ne montre pas de port publié par surprise.

Pour aller plus loin, gardez sous la main la documentation Docker pour Debian, les étapes post-installation Linux et la page des versions Debian maintenues. Et si Docker refuse de démarrer, ne partez pas directement sur une réinstallation complète : commencez par journalctl -u docker -b, c’est souvent là que la vraie erreur se trouve.