Installation de Docker sur Linux
Deux approches existent : le paquet
docker.iofourni par la distribution (souvent en retard sur la dernière version) ou le dépôt officiel Docker, recommandé pour avoir des versions à jour et cohérentes. Ce cours couvre l'installation via le dépôt officiel sur une distribution basée Debian/Ubuntu.
Installation via le dépôt officiel (Debian/Ubuntu)
1. Désinstaller d'anciennes versions
sudo apt remove docker docker-engine docker.io containerd runc
2. Installer les prérequis et la clé GPG du dépôt
Depuis Debian 12/Ubuntu 22.04+, apt-key est déprécié : la clé GPG se dépose directement dans /etc/apt/keyrings/ et se référence via signed-by.
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
(Remplacer debian par ubuntu dans l'URL si besoin.)
3. Ajouter le dépôt
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
4. Installer Docker Engine
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker-ce: le daemon (dockerd).docker-ce-cli: le client en ligne de commande.containerd.io: le runtime de haut niveau.docker-buildx-plugin: le moteur de build moderne (multi-plateforme, cache avancé).docker-compose-plugin: la commandedocker compose(v2, sans tiret — voir Docker Compose).
Vérifier l'installation
sudo systemctl status docker # le daemon doit être "active (running)"
sudo docker run hello-world # télécharge et lance une image de test
docker version # version du client ET du serveur
docker info # informations détaillées sur l'installation
Étapes post-installation indispensables
Utiliser Docker sans sudo
Par défaut, seul root (et les membres du groupe docker) peut parler au socket du daemon.
sudo usermod -aG docker $USER
# Se déconnecter/reconnecter (ou : newgrp docker) pour appliquer le changement
docker run hello-world # doit fonctionner sans sudo
⚠️ Comme vu dans le cours Introduction & architecture, appartenir au groupe
dockeréquivaut à des droits root sur la machine — à réserver aux comptes de confiance.
Démarrage automatique au boot
sudo systemctl enable docker
sudo systemctl enable containerd
Configurer les limites de logs (recommandé en production)
Par défaut, les logs d'un conteneur (docker logs) peuvent grossir indéfiniment et remplir le disque. À configurer dans /etc/docker/daemon.json :
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
sudo systemctl restart docker # appliquer la nouvelle configuration
Désinstaller Docker
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 # supprime aussi images/conteneurs/volumes !
Ce qu'il faut retenir
- Préférer le dépôt officiel Docker au paquet de distribution pour des versions à jour.
- Après installation :
docker run hello-worldpour valider,usermod -aG docker $USERpour évitersudoà chaque commande. - Le groupe
dockeréquivaut à root — ce n'est pas une astuce de confort anodine côté sécurité. - Penser à limiter la taille des logs (
daemon.json) avant de mettre en production.