Virtualisation / Tutoriel

Installer Docker sur Debian ou Ubuntu

Installer Docker Engine et Docker Compose depuis le dépôt officiel sur Debian 13 ou Ubuntu, vérifier l'installation, choisir entre le groupe docker et sudo, limiter la taille des journaux, et comprendre le piège du pare-feu avec les ports publiés.

Virtualisation Tutoriel Intermédiaire Publié le 20 octobre 2026 20 min de lecture
Vue aérienne d'un port rempli de conteneurs colorés
Photo : Cosmin Andrei Buzamat sur Unsplash

Avant de commencer

  • Un serveur ou une VM Debian 12 ou 13, ou Ubuntu dans une version maintenue, en 64 bits
  • Un compte avec sudo (voir les commandes Linux pour débuter)
  • Un accès à Internet depuis le serveur

En clair

Docker permet de faire tourner une application dans un conteneur : une boîte qui contient l'application et tout ce dont elle a besoin, et qui s'exécute de la même façon sur n'importe quel serveur Linux. Plutôt que d'installer un logiciel et ses dépendances à la main, on récupère une image prête à l'emploi et on la lance. Cette fiche installe Docker proprement, depuis le dépôt officiel, avec les bons réglages dès le départ. Pour la différence entre conteneur et machine virtuelle, voir machine virtuelle et hyperviseur.

1. Quel paquet installer ?

Plusieurs versions de Docker circulent sous Linux :

Source Paquet Conseil
Dépôt officiel de Docker docker-ce et ses plugins Recommandé : version à jour, Docker Compose inclus
Dépôts de Debian ou d'Ubuntu docker.io Fonctionne, mais souvent en retard ; à ne pas mélanger avec le précédent
Snap (Ubuntu) docker Déconseillé : comportements différents (chemins, droits)
Docker Desktop Application graphique Pour un poste de travail, pas pour un serveur

Cette fiche suit la méthode officielle, avec le dépôt de Docker. Docker prend en charge Debian 13 « Trixie » et Debian 12 « Bookworm », ainsi que les versions maintenues d'Ubuntu.

Et Podman ?

Podman est une alternative compatible, sans service permanent et pensée pour fonctionner sans droits root. Voir conteneurs rootless avec Podman et Quadlet.

2. Retirer les anciens paquets

Si Docker a déjà été installé depuis les dépôts de la distribution, retirez les paquets en conflit. La commande ne touche qu'à ceux qui sont réellement installés :

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

Les images, conteneurs et volumes existants, rangés dans /var/lib/docker/, sont conservés.

3. Ajouter le dépôt officiel

Sur Debian

Installer les outils et la clé de signature du dépôt :

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

Déclarer le dépôt, au format .sources (deb822) utilisé par Debian 13 :

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

La commande remplit automatiquement le nom de la version (trixie ou bookworm) et l'architecture (amd64 ou arm64).

Sur Ubuntu

Les commandes sont les mêmes, en remplaçant debian par ubuntu dans les deux adresses, et la ligne Suites par :

Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")

Vérifiez le contenu du fichier créé :

cat /etc/apt/sources.list.d/docker.sources
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: trixie
Components: stable
Architectures: amd64
Signed-By: /etc/apt/keyrings/docker.asc

4. Installer Docker

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Paquet Rôle
docker-ce Le moteur Docker (service dockerd)
docker-ce-cli La commande docker
containerd.io Le gestionnaire de conteneurs bas niveau sur lequel s'appuie Docker
docker-buildx-plugin La construction d'images (docker build)
docker-compose-plugin Docker Compose, sous la forme docker compose (avec une espace)

docker compose et non plus docker-compose

L'ancien programme séparé docker-compose (avec un tiret) est abandonné. Docker Compose est désormais un plugin : on tape docker compose up -d. Les fichiers docker-compose.yml existants restent compatibles ; le nom conseillé est aujourd'hui compose.yaml.

5. Vérifier l'installation

Le service doit être actif et démarrer avec le système :

systemctl status docker
sudo systemctl enable docker.service containerd.service

Lancez le conteneur de test :

sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

Vérifiez les versions :

docker --version
docker compose version

6. Utiliser Docker sans sudo : le groupe docker

Par défaut, seul root peut piloter Docker. Pour éviter de taper sudo à chaque commande, on peut ajouter son compte au groupe docker :

sudo usermod -aG docker spo

Déconnectez-vous puis reconnectez-vous (ou lancez newgrp docker) pour que le changement prenne effet, puis testez :

docker run hello-world

Le groupe docker équivaut à root

La documentation de Docker est explicite : appartenir au groupe docker donne des privilèges équivalents à root. Un membre de ce groupe peut lancer un conteneur qui monte / et modifier n'importe quel fichier du système. N'y ajoutez que des comptes d'administration, jamais un compte de service exposé. Sur un serveur sensible, gardez sudo, ou utilisez le mode rootless de Docker, ou Podman.

7. Limiter la taille des journaux

Par défaut, Docker conserve sans limite tout ce que les conteneurs écrivent sur leur sortie : un conteneur bavard peut remplir le disque en quelques semaines. Créez le fichier /etc/docker/daemon.json :

{
  "log-driver": "local",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Puis redémarrez Docker :

sudo systemctl restart docker

Le pilote local compresse les journaux et applique la rotation : au plus 3 fichiers de 10 Mo par conteneur. Le réglage s'applique aux conteneurs créés après le changement ; recréez les autres (docker compose up -d --force-recreate). Les journaux se lisent toujours avec docker logs nom-du-conteneur.

8. Le piège du pare-feu

Les ports publiés contournent ufw et firewalld

Quand un conteneur publie un port (-p 8080:80 ou ports: dans Compose), Docker crée ses propres règles de pare-feu, avant celles de ufw ou de firewalld. Résultat : le port est joignable de partout, même si ufw le bloque. C'est une source fréquente d'exposition involontaire.

Les parades, de la plus simple à la plus complète :

Méthode Exemple Effet
Publier sur une seule adresse -p 127.0.0.1:8080:80 Le service n'est joignable que depuis le serveur lui-même (idéal derrière un reverse proxy)
Publier sur l'adresse du réseau local -p 192.168.1.10:8080:80 Le service n'écoute que sur cette interface
Ne pas publier du tout Pas de ports:, les conteneurs se parlent par un réseau Docker Seul le reverse proxy publie les ports 80 et 443
Filtrer dans la chaîne DOCKER-USER Règles iptables ou nftables dédiées Filtrage fin, réservé aux utilisateurs avancés
Filtrer en amont Pare-feu du routeur, groupes de sécurité de l'hébergeur Protection indépendante du serveur

9. Vérification finale

Contrôle Commande Résultat attendu
Service actif au démarrage systemctl is-enabled docker enabled
Moteur fonctionnel docker run --rm hello-world Message « Hello from Docker! »
Compose disponible docker compose version Docker Compose version v2.x ou plus
Rotation des journaux docker info --format '{{.LoggingDriver}}' local
Ports exposés sudo ss -tlnp Uniquement les ports voulus

10. Mettre à jour et désinstaller

Docker se met à jour avec le reste du système :

sudo apt update
sudo apt full-upgrade

Pour désinstaller complètement :

sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -rf /var/lib/docker /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.sources /etc/apt/keyrings/docker.asc

Données supprimées

rm -rf /var/lib/docker efface toutes les images, conteneurs et volumes, donc les données de vos applications. Sauvegardez les volumes avant.

À retenir

  • Installez depuis le dépôt officiel de Docker (docker-ce), pas en mélangeant avec docker.io.
  • Docker Compose est inclus : docker compose (avec une espace).
  • Le groupe docker équivaut à root : à réserver aux administrateurs.
  • Configurez la rotation des journaux dans /etc/docker/daemon.json dès l'installation.
  • Les ports publiés contournent ufw : publiez sur 127.0.0.1 derrière un reverse proxy, ou filtrez en amont.

À lire aussi