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 Jarvis
METTRE_VOTRE_USERCodename Ubuntu
METTRE_VOTRE_CODENAME_UBUNTUArchitecture
METTRE_VOTRE_ARCHITECTURERè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
Validationsource /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 seuledpkg -l | grep -E '^(ii|rc)\s+(docker.io|docker-compose|docker-compose-v2|docker-doc|docker-buildx|podman-docker|containerd|runc)\b' || truePourquoi : 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
Modificationsudo 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 || truePourquoi : É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
Modificationsudo apt update
sudo apt install -y ca-certificates curlPourquoi : 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
Modificationsudo install -m 0755 -d /etc/apt/keyringsPourquoi : 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
Modificationsudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.ascPourquoi : 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
Validationls -l /etc/apt/keyrings/docker.asc
gpg --show-keys --fingerprint /etc/apt/keyrings/docker.ascPourquoi : 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
Modificationsudo 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
EOFPourquoi : 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é
Validationcat /etc/apt/sources.list.d/docker.sourcesPourquoi : 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
Modificationsudo apt updatePourquoi : 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
Validationapt-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
Modificationsudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginPourquoi : 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
Validationsudo systemctl is-active docker
sudo systemctl is-active containerd
sudo systemctl is-enabled docker
sudo systemctl is-enabled containerdPourquoi : 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
Validationsudo docker version
sudo docker compose version
sudo docker buildx versionPourquoi : 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
Validationsudo docker run --rm hello-worldPourquoi : 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
Modificationsudo usermod -aG docker METTRE_VOTRE_USERPourquoi : 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
Optionnelnewgrp dockerPourquoi : 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
Validationid METTRE_VOTRE_USERPourquoi : 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
Validationdocker run --rm hello-worldPourquoi : 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
Validationdocker compose version
docker compose lsPourquoi : 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
Validationss -lntp | grep -Ei 'dockerd|docker' || truePourquoi : 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
Validationdocker 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.