Installer Docker sur Debian
Publié le 10 min de lecture
Mis à jour le
Dans cette série41 min de lecture au total
Docker fait tourner une application dans un environnement isolé, avec ses propres bibliothèques et ses propres fichiers, mais sur le noyau de la machine hôte. C’est ce dernier point qui fait toute la différence avec une machine virtuelle : pas de second système d’exploitation à démarrer, donc un conteneur qui se lance en une seconde et pèse quelques dizaines de mégaoctets.
| Machine virtuelle | Conteneur | |
|---|---|---|
| Noyau | le sien, complet | celui de l’hôte, partagé |
| Démarrage | dizaines de secondes | moins d’une seconde |
| Poids sur disque | plusieurs gigaoctets | dizaines de mégaoctets |
| Isolation | matérielle, très forte | par espaces de noms du noyau |
Étape 1 : installer Docker depuis le dépôt officiel
Debian propose bien un paquet docker.io dans ses dépôts, mais il retarde souvent de plusieurs versions et ne fournit pas les greffons modernes. Le dépôt officiel de Docker demande quatre étapes de plus et donne une installation à jour et complète.
Installer les prérequis
Fenêtre de terminal sudo apt update && sudo apt install ca-certificates curlca-certificatesfournit les autorités de certification nécessaires pour valider le HTTPS du dépôt,curlsert à télécharger la clé.Récupérer la clé de signature
Fenêtre de terminal sudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.ascDéclarer le dépôt
Fenêtre de terminal 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" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullLes deux substitutions rendent la ligne portable :
dpkg --print-architecturerenvoie l’architecture de la machine (amd64,arm64), etVERSION_CODENAMEle nom de la version de Debian (bookworm,trixie). Vous pouvez copier ce bloc tel quel sur n’importe quelle machine.Installer les paquets
Fenêtre de terminal sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginPaquet Rôle docker-cele démon, qui fait tourner les conteneurs docker-ce-clila commande dockerque vous tapezcontainerd.iole moteur d’exécution bas niveau, utilisé par le démon docker-buildx-pluginconstruction d’images, y compris multi-architectures docker-compose-pluginla commande docker compose, pour décrire plusieurs conteneurs dans un fichierVérifier que le service tourne
Fenêtre de terminal sudo systemctl enable --now dockersudo systemctl status dockerenable --nowdémarre le service et le programme au démarrage de la machine, ce qui évite de découvrir après un redémarrage que les conteneurs ne sont pas revenus.Valider l'installation
Fenêtre de terminal sudo docker run hello-worldsudo docker run hello-world Hello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/Ce message n’est pas un simple « ça marche » : il décrit exactement la chaîne que Docker vient de parcourir, du client au démon, du démon au registre, puis du registre au conteneur. Si vous le voyez, les quatre composants installés communiquent correctement.
Taper sudo devant chaque commande devient vite pénible. C’est réglable, à condition d’en mesurer la portée.
Étape 2 : utiliser Docker sans sudo
sudo usermod -aG docker $USERnewgrp dockerLa première ligne ajoute votre compte au groupe docker, la seconde applique le changement à la session en cours sans avoir à se déconnecter.
Une fois le groupe en place, la commande fonctionne directement :
docker run hello-worldPassons à un conteneur qui rend un service réel.
Étape 3 : lancer un conteneur utile
À titre d’exemple, nous allons faire tourner un serveur web Apache.
docker run -d --name docker-apache -v /var/www/:/usr/local/apache2/htdocs/ -p 3000:80 httpdDécomposons chaque partie :
| Option | Rôle |
|---|---|
docker run | crée et démarre un conteneur, en téléchargeant l’image si elle est absente |
-d | mode détaché, le conteneur tourne en arrière-plan et rend la main |
--name docker-apache | nomme le conteneur, sinon Docker génère un nom aléatoire |
-v /var/www/:/usr/local/apache2/htdocs/ | monte un dossier de l’hôte dans le conteneur, chemin_hôte:chemin_conteneur |
-p 3000:80 | publie un port, port_hôte:port_conteneur |
httpd | le nom de l’image, ici Apache, remplaçable par nginx |
Le site est alors joignable sur http://IP_MACHINE:3000, et son contenu se modifie simplement en éditant /var/www sur l’hôte.
Piloter les conteneurs au quotidien
Une poignée de commandes couvre l’essentiel de l’exploitation.
| Commande | Ce qu’elle fait |
|---|---|
docker ps | liste les conteneurs en cours d’exécution |
docker ps -a | liste tous les conteneurs, y compris arrêtés |
docker logs -f docker-apache | affiche et suit la sortie du conteneur |
docker exec -it docker-apache bash | ouvre un shell dans le conteneur |
docker stop docker-apache | arrête le conteneur proprement |
docker start docker-apache | le redémarre avec la même configuration |
docker rm docker-apache | le supprime, il doit être arrêté au préalable |
docker images | liste les images téléchargées |
docker system df | montre l’espace disque occupé par Docker |
Le Docker Hub
Le Docker Hub est le registre public d’images, l’équivalent d’un magasin d’applications. On y trouve les images officielles, celles publiées par la communauté, et surtout la documentation de chacune.

Chaque image expose ses versions sous forme d’étiquettes, ainsi que les variantes de base disponibles.

La documentation d’une image indique les chemins à monter en volume, les ports exposés et les variables d’environnement attendues. C’est la première chose à lire avant de composer une commande docker run.

L’installation est fonctionnelle et vous savez piloter un conteneur. Les articles suivants de la série s’appuient sur cette base pour héberger des services réels.