Je vous propose une série de travaux autour de Docker CE (Community Edition), afin de découvrir progressivement et maîtriser cet environnement de gestion de conteneurs, devenu aujourd'hui incontournable. Dans cette partie préliminaire, on va installer Docker CE sur un serveur Debian (Docker Engine).
Pour suivre ce parcours, il faut au préalable une bonne connaissance de Linux et des réseaux. Il est également recommandé d'avoir suivi le cours introductif sur les conteneurs et Docker.
Nous allons nous appuyer sur une VM Debian x64 en mode core, version Trixie (13), installée convenablement selon ce tutoriel détaillé.
On modifie ensuite légèrement la configuration :
Une fois la VM démarrée, loggé en sudoer, on configure le hostname de la machine en docker-xy (xy représentent vos initiales) en modifiant :
sudo nano /etc/hostname
Exemple ici avec mes initiales pm :
docker-pm
sudo nano /etc/hosts
On modifie les références au nom de la machine (ligne 2):
127.0.0.1 localhost
127.0.1.1 docker-pm
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Puis on redémarre pour la prise en compte :
sudo reboot
On continue avec une mise à jour de l’index apt et une mise à jour éventuelle des paquets :
sudo apt update && sudo apt upgrade
puis l'installation du service ssh :
sudo apt -y install openssh-server
Enfin, on va repérer (et mémoriser) l’adresse IP de notre serveur :
ip a
et se déconnecter:
exit
On peut également utilise CTRL D pour se déconnecter d'une session bash.
On va accéder désormais à notre serveur Debianb en SSH depuis la machine hôte, avec le compte de l'utilisateur sudoer :

Nous allons depuis ce terminal installer Docker Community Edition sur notre serveur.
Cette partie est largement inspirée de la documentation Docker.
Le nom du paquet officiel pour Docker Community Edition est docker-ce. Il n’est pas dans la distribution de base, aussi nous allons devoir ajouter le dépôt Docker à notre système.
Comme il est indiqué dans la documentation officielle, il existe des paquets non officiels pour Docker, comme docker.io ou docker-doc.
Supprimons d'abord les paquets qui pourraient être en conflit (peu probable avec une machine toute neuve) :
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)
Installons quelques paquets prérequis (certains seront déjà présents suite à l'installation du serveur ssh notamment) :
sudo apt -y install ca-certificates curl
On ajoute la clé publique GPG Docker officielle au trousseau apt :
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
Utilisez la commande suivante (sur une seule ligne) pour ajouter le dépôt stable, selon le nouveau format deb822 :
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
Signed-By: /etc/apt/keyrings/docker.asc
EOF
La commande
. /etc/os-release && echo "$VERSION_CODENAME"subsituée ci-dessus retourne le nom de votre distribution Debian, comme "bullseye" ou "trixie". Sur une distribution dérivée, comme Kali Linux, il faudra directement saisir le nom de la distribution.
Pour voir l’entrée qui a été créée par cette commande :
cat /etc/apt/sources.list.d/docker.sources
On relance une mise à jour de l’index apt :
sudo apt update
Le dépôt Docker doit être visible dans la sortie (lignes 4 et 5):
Atteint : 1 http://security.debian.org/debian-security trixie-security InRelease
Atteint : 2 http://deb.debian.org/debian trixie InRelease
Atteint : 3 http://deb.debian.org/debian trixie-updates InRelease
Réception de : 4 https://download.docker.com/linux/debian trixie InRelease [32,5 kB]
Réception de : 5 https://download.docker.com/linux/debian trixie/stable amd64 Packages [23,9 kB]
56,4 ko réceptionnés en 0s (174 ko/s)
Tous les paquets sont à jour.
On peut maintenant installer la dernière version de Docker CE et ses outils :
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Pour vérifier l’état du service Docker Engine, un classique :
systemctl status docker

Le service Docker est lié via un socket Unix au lieu d'un port TCP. Par défaut, le socket Unix appartient à l'utilisateur root et les autres utilisateurs ne peuvent y accéder qu'en utilisant sudo. Le démon Docker s'exécute toujours en tant qu'utilisateur root.
Si vous ne souhaitez pas faire précéder la commande docker de sudo, il existe un un groupe Unix spécifique appelé docker créé au moment de l'installation. Lorsque le service Docker démarre, il crée un socket Unix accessible aux membres du groupe docker.
Attention : Le groupe docker accorde des privilèges équivalents à l'utilisateur root.
Ajoutez votre utilisateur au groupe Docker :
sudo adduser $USER docker
Il faut déconnecter (CTRL D) et reconnecter l’utilisateur pour que l’appartenance au groupe soit prise en compte.
La plupart des distributions Linux actuelles utilisent systemd pour gérer les services qui démarrent au démarrage du système. Pour activer Docker au démarrage avec systemd :
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Voir ici : https://docs.docker.com/install/linux/linux-postinstall/
