Module 02 / 19← Ordre des modules
● Système · Conteneurs

Docker Engine

Ce module installe Docker Engine depuis le dépôt APT officiel Docker, avec containerd, Buildx et Docker Compose v2. À la fin, le service doit démarrer automatiquement et le compte Jarvis doit pouvoir exécuter Docker localement sans exposer le daemon sur le réseau.

Point de départ

Modules 00 et 01 validés

Point d’arrivée

Docker Engine + Compose opérationnels

Secrets dans la page

Aucune valeur réelle publiée

Avant de commencer

Prérequis

  • Module 00 terminé.
  • Module 01 terminé ou volontairement non applicable.
  • Accès Internet fonctionnel.
  • Compte final disposant de sudo.
  • Aucune donnée Docker existante à préserver sur cette installation neuve.

Valeurs à personnaliser

Ce module n’utilise qu’un placeholder lié au compte local :

Compte JarvisMETTRE_VOTRE_USER
Codename UbuntuMETTRE_VOTRE_CODENAME_UBUNTU
ArchitectureMETTRE_VOTRE_ARCHITECTURE
Règle : ne lancez jamais une commande qui contient encore un texte METTRE_VOTRE_.... Remplacez d’abord la valeur dans votre terminal, puis relisez la commande avant validation.

Légende des commandes

Lecture seuleModificationValidationOptionnel

Installation pas à pas

02.1 · Vérifier Ubuntu et l’architecture

Validation
source /etc/os-release
printf "OS=%s %s\nCODENAME=%s\nARCH=%s\n" "$NAME" "$VERSION_ID" "${UBUNTU_CODENAME:-$VERSION_CODENAME}" "$(dpkg --print-architecture)"
Pourquoi : Docker doit utiliser le dépôt correspondant à la distribution et à l’architecture réellement installées.
Résultat attendu : Ubuntu est identifié correctement et une architecture supportée est affichée.

02.2 · Rechercher d’anciens paquets Docker

Lecture seule
dpkg -l | grep -E '^(ii|rc)\s+(docker.io|docker-compose|docker-compose-v2|docker-doc|docker-buildx|podman-docker|containerd|runc)\b' || true
Pourquoi : Repérer les paquets pouvant entrer en conflit avec Docker Engine officiel.
Résultat attendu : Aucune ligne sur une installation neuve, ou la liste des paquets à retirer.

02.3 · Retirer les paquets en conflit

Modification
sudo apt remove -y $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc 2>/dev/null | cut -f1) 2>/dev/null || true
Pourquoi : Éviter les conflits entre les paquets Ubuntu/non officiels et ceux fournis par Docker.
Résultat attendu : La commande termine sans erreur bloquante.
Cette étape ne supprime pas volontairement /var/lib/docker. Sur une installation réellement neuve, ce répertoire ne contient normalement aucune donnée.

02.4 · Installer les prérequis du dépôt

Modification
sudo apt update
sudo apt install -y ca-certificates curl
Pourquoi : S’assurer que HTTPS et curl sont présents pour récupérer la clé officielle Docker.
Résultat attendu : Les deux paquets sont installés.

02.5 · Créer le répertoire de clés APT

Modification
sudo install -m 0755 -d /etc/apt/keyrings
Pourquoi : Préparer l’emplacement moderne utilisé par APT pour les clés de dépôts tiers.
Résultat attendu : Le répertoire /etc/apt/keyrings existe.

02.6 · Installer la clé officielle Docker

Modification
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Pourquoi : Télécharger la clé depuis le domaine officiel Docker et la rendre lisible par APT.
Résultat attendu : Le fichier docker.asc existe et est lisible.

02.7 · Inspecter la clé téléchargée

Validation
ls -l /etc/apt/keyrings/docker.asc
gpg --show-keys --fingerprint /etc/apt/keyrings/docker.asc
Pourquoi : Vérifier que le fichier n’est pas vide et qu’il contient bien une clé OpenPGP avant de configurer le dépôt.
Résultat attendu : Une clé et son empreinte sont affichées.

02.8 · Ajouter le dépôt APT officiel Docker

Modification
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<'EOF'
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: METTRE_VOTRE_CODENAME_UBUNTU
Components: stable
Architectures: METTRE_VOTRE_ARCHITECTURE
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Pourquoi : Déclarer explicitement le dépôt stable Docker. Remplacez le codename et l’architecture par les valeurs vérifiées à l’étape 02.1.
Résultat attendu : Le fichier docker.sources est créé.

02.9 · Vérifier le dépôt configuré

Validation
cat /etc/apt/sources.list.d/docker.sources
Pourquoi : Relire le fichier avant d’utiliser le dépôt.
Résultat attendu : Le domaine est download.docker.com, la suite correspond à votre Ubuntu et la clé pointe vers docker.asc.

02.10 · Actualiser l’index APT

Modification
sudo apt update
Pourquoi : Demander à APT de charger les métadonnées du nouveau dépôt Docker.
Résultat attendu : Aucune erreur de signature ou de dépôt.

02.11 · Vérifier la provenance de docker-ce

Validation
apt-cache policy docker-ce | sed -n '1,20p'
Pourquoi : S’assurer que docker-ce est proposé par le dépôt Docker avant installation.
Résultat attendu : Une version Candidate est affichée depuis download.docker.com.

02.12 · Installer Docker Engine et les plugins

Modification
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Pourquoi : Installer le daemon Docker, le client, containerd, Buildx et Docker Compose v2 depuis le dépôt officiel.
Résultat attendu : Tous les paquets sont installés sans erreur.

02.13 · Vérifier les services

Validation
sudo systemctl is-active docker
sudo systemctl is-active containerd
sudo systemctl is-enabled docker
sudo systemctl is-enabled containerd
Pourquoi : Confirmer que Docker et containerd sont actifs et prévus au démarrage.
Résultat attendu : Les services retournent active et enabled.

02.14 · Afficher les versions installées

Validation
sudo docker version
sudo docker compose version
sudo docker buildx version
Pourquoi : Valider séparément le moteur, Compose v2 et Buildx.
Résultat attendu : Les trois commandes affichent une version.

02.15 · Tester le moteur avec hello-world

Validation
sudo docker run --rm hello-world
Pourquoi : Télécharger une image de test officielle, créer un conteneur, exécuter le test puis le supprimer automatiquement.
Résultat attendu : Le message de réussite Docker est affiché.

02.16 · Ajouter le compte final au groupe docker

Modification
sudo usermod -aG docker METTRE_VOTRE_USER
Pourquoi : Autoriser le compte Jarvis à utiliser le socket Docker sans préfixer chaque commande par sudo.
Résultat attendu : La commande termine sans erreur.
Sécurité : l’appartenance au groupe docker donne des privilèges équivalents à root via le daemon Docker. N’ajoutez que le compte d’administration prévu.

02.17 · Prendre en compte le nouveau groupe

Optionnel
newgrp docker
Pourquoi : Activer immédiatement le groupe docker dans un sous-shell.
Résultat attendu : La commande ouvre un shell avec le groupe docker actif.
Alternative : déconnectez-vous complètement puis reconnectez-vous. Cela évite de conserver un sous-shell spécial.

02.18 · Vérifier l’appartenance au groupe

Validation
id METTRE_VOTRE_USER
Pourquoi : Confirmer que le compte final est membre du groupe docker.
Résultat attendu : docker apparaît dans la liste des groupes.

02.19 · Tester Docker sans sudo

Validation
docker run --rm hello-world
Pourquoi : Confirmer que le compte final peut parler au socket Docker après la mise à jour des groupes.
Résultat attendu : Le test fonctionne sans sudo et sans Permission denied.

02.20 · Vérifier Docker Compose

Validation
docker compose version
docker compose ls
Pourquoi : Valider le plugin Compose v2 qui sera utilisé plus tard pour les services conteneurisés.
Résultat attendu : La version Compose est affichée et la liste peut être vide sur une installation neuve.

02.21 · Vérifier l’absence d’API Docker TCP exposée

Validation
ss -lntp | grep -Ei 'dockerd|docker' || true
Pourquoi : Le Golden Build utilise le socket Unix local. Le daemon Docker ne doit pas être exposé en TCP simplement pour administrer la machine.
Résultat attendu : Aucun port TCP Docker n’est nécessairement affiché.
Ne configurez pas de socket Docker TCP non chiffré pour les modules suivants.

02.22 · Afficher l’état final Docker

Validation
docker info --format 'Server={{.ServerVersion}} | Driver={{.Driver}} | Root={{.DockerRootDir}}'
Pourquoi : Obtenir une synthèse courte du moteur sans afficher de données privées.
Résultat attendu : La version serveur, le driver de stockage et le répertoire Docker sont affichés.
Méthode retenue : ce module utilise le dépôt APT officiel Docker. Le script get.docker.com n’est pas utilisé pour le Golden Build afin que la provenance et les paquets installés restent explicites et faciles à auditer.

Validation du Module 02

Ne passez au module suivant que lorsque tous les points applicables sont validés.

Le dépôt officiel Docker est configuré.
APT propose docker-ce depuis download.docker.com.
docker.service est active.
containerd.service est active.
Docker et containerd sont enabled.
docker version fonctionne.
docker compose version fonctionne.
docker buildx version fonctionne.
hello-world fonctionne.
Le compte final est membre du groupe docker.
Docker fonctionne sans sudo après reconnexion/newgrp.
Aucun daemon Docker TCP non nécessaire n’a été exposé.

STOP — Module 02 validé

Si tous les contrôles sont corrects, ce module est terminé. Vous pouvez poursuivre l’installation de Jarvis. En cas d’écart, restez sur ce module et diagnostiquez la dernière étape en erreur.