Installer Docker dans la VM
Installer Engine, Compose et les droits utilisateur sans étape implicite.
Dans ce chapitre : 9 étapes et 27 preuves de validation.
Étape 5 — Identifier précisément la VM
Section intitulée « Étape 5 — Identifier précisément la VM »Objectif. Tu vérifieras que les commandes d’installation correspondent à Debian.
État du projet avant cette étape. Tu es dans le terminal Linux de la VM avec sudo.
Comprendre le changement
Section intitulée « Comprendre le changement »Docker publie des dépôts différents selon la distribution et l’architecture. /etc/os-release donne la distribution ; dpkg donne l’architecture des paquets.
Faire une seule chose
Section intitulée « Faire une seule chose »Affiche ces informations. Continue avec les commandes Debian uniquement si ID=debian. Pour Ubuntu, utilise la page officielle Ubuntu équivalente.
. /etc/os-release
echo "distribution=$ID version=$VERSION_ID codename=$VERSION_CODENAME"
dpkg --print-architectureCe que fait chaque partie
- . /etc/os-release charge les informations système dans le shell.
- echo affiche les trois valeurs utiles sans modifier la VM.
- dpkg --print-architecture affiche par exemple amd64 ou arm64.
distribution=debian apparaît avec une version, un codename et une architecture.
Si cela échoue
Si ID n’est pas debian, n’ajoute pas le dépôt Debian : suis la documentation Docker de ta distribution.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 6 — Mettre APT à jour
Section intitulée « Étape 6 — Mettre APT à jour »Objectif. Tu prépareras le gestionnaire de paquets avant d’ajouter Docker.
État du projet avant cette étape. Debian est identifié, mais sa liste locale de paquets peut être ancienne.
Comprendre le changement
Section intitulée « Comprendre le changement »apt update télécharge la liste actuelle des paquets. ca-certificates permet de vérifier HTTPS ; curl téléchargera la clé Docker ; git et make serviront au projet.
Faire une seule chose
Section intitulée « Faire une seule chose »Actualise APT puis installe uniquement les outils de base. Aucun composant Docker n’est installé à cette étape.
sudo apt update
sudo apt install -y ca-certificates curl git makeCe que fait chaque partie
- sudo exécute la commande avec les droits administrateur.
- apt update actualise le catalogue.
- apt install ajoute les quatre outils.
- -y accepte la confirmation d’installation.
APT termine sans erreur et indique les paquets installés ou déjà à jour.
Si cela échoue
Une erreur Temporary failure resolving signale le réseau de la VM, pas Docker.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 7 — Retirer les paquets Docker conflictuels
Section intitulée « Étape 7 — Retirer les paquets Docker conflictuels »Objectif. Tu éviteras de mélanger les paquets Debian et le dépôt officiel Docker.
État du projet avant cette étape. Les outils de base sont installés. Docker ne l’est pas encore depuis sa source officielle.
Comprendre le changement
Section intitulée « Comprendre le changement »Debian peut fournir docker.io ou une ancienne commande docker-compose. Docker recommande de retirer ces paquets avant d’installer docker-ce et le plugin Compose.
Faire une seule chose
Section intitulée « Faire une seule chose »Lance la commande officielle. Sur une VM neuve, APT peut simplement indiquer qu’aucun de ces paquets n’est installé : c’est un résultat normal.
conflicts=$(dpkg-query -W -f='${binary:Package}\n' docker.io docker-compose docker-doc docker-buildx podman-docker containerd runc 2>/dev/null)
if [ -n "$conflicts" ]; then
sudo apt remove -y $conflicts
else
echo "Aucun paquet conflictuel installé"
fiCe que fait chaque partie
- dpkg-query recherche uniquement les paquets réellement installés.
- conflicts mémorise leurs noms sans modifier la VM.
- Le if lance apt remove seulement si la liste n’est pas vide.
- Cette étape évite que deux installations gèrent les mêmes binaires ou le même runtime.
APT retire les éventuels conflits ou affiche Aucun paquet conflictuel installé.
Si cela échoue
Si apt refuse une suppression à cause de dépendances, lis la liste proposée avant de confirmer une autre action.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 8 — Installer la clé du dépôt Docker
Section intitulée « Étape 8 — Installer la clé du dépôt Docker »Objectif. APT pourra vérifier que les paquets viennent bien de Docker.
État du projet avant cette étape. APT est propre, mais il ne connaît pas encore le dépôt Docker.
Comprendre le changement
Section intitulée « Comprendre le changement »Une clé GPG permet à APT de vérifier la signature des métadonnées téléchargées. Elle ne donne aucun accès à ton compte et ce n’est pas un mot de passe.
Faire une seule chose
Section intitulée « Faire une seule chose »Crée le dossier des clés, télécharge la clé officielle puis rends-la lisible par APT.
Fichiers ou emplacements concernés
/etc/apt/keyrings/docker.asc
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
ls -l /etc/apt/keyrings/docker.ascCe que fait chaque partie
- install -d crée le dossier avec le mode 0755.
- curl -fsSL télécharge la clé et échoue proprement en cas d’erreur HTTP.
- -o choisit le fichier de destination.
- chmod a+r autorise APT à lire la clé.
- ls confirme l’existence et les permissions.
docker.asc existe, n’est pas vide et est lisible.
Si cela échoue
Si curl échoue, vérifie la date de la VM, sa connexion réseau et l’URL exacte.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 9 — Ajouter le dépôt Docker
Section intitulée « Étape 9 — Ajouter le dépôt Docker »Objectif. APT saura maintenant où trouver Engine et Compose.
État du projet avant cette étape. La clé officielle est installée, mais aucune source APT ne l’utilise encore.
Comprendre le changement
Section intitulée « Comprendre le changement »Le fichier docker.sources relie l’URL Docker, le codename Debian, l’architecture et la clé de signature. Les valeurs sont lues depuis la VM pour éviter de les deviner.
Faire une seule chose
Section intitulée « Faire une seule chose »Crée le fichier exactement comme ci-dessous, puis affiche-le avant d’actualiser APT.
Fichiers ou emplacements concernés
/etc/apt/sources.list.d/docker.sources
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<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
cat /etc/apt/sources.list.d/docker.sourcesCe que fait chaque partie
- tee écrit le fichier avec les droits sudo.
- Suites prend le codename réel de Debian.
- Architectures reprend l’architecture vérifiée.
- Signed-By associe ce dépôt à la clé Docker.
- cat permet de relire le résultat avant utilisation.
Le fichier contient six lignes cohérentes, dont le codename de ta VM.
Si cela échoue
Un champ Suites vide signifie que VERSION_CODENAME n’a pas été lu : corrige avant apt update.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 10 — Installer Engine, Buildx et Compose
Section intitulée « Étape 10 — Installer Engine, Buildx et Compose »Objectif. Tu installeras enfin les cinq composants Docker nécessaires.
État du projet avant cette étape. APT connaît le dépôt officiel et sa clé.
Comprendre le changement
Section intitulée « Comprendre le changement »docker-ce est le moteur, docker-ce-cli est la commande, containerd.io exécute les containers, buildx construit les images et docker-compose-plugin fournit docker compose.
Faire une seule chose
Section intitulée « Faire une seule chose »Actualise APT une dernière fois puis installe les cinq paquets ensemble.
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginCe que fait chaque partie
- Le premier apt update charge le nouveau dépôt.
- docker-ce installe le daemon Docker Engine.
- docker-ce-cli installe la commande docker.
- containerd.io fournit le runtime.
- buildx et compose ajoutent les deux plugins CLI.
Les cinq paquets sont installés sans erreur.
Si cela échoue
NO_PUBKEY signale un problème de clé ; Package has no installation candidate signale souvent un mauvais codename ou dépôt.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 11 — Démarrer le daemon Docker
Section intitulée « Étape 11 — Démarrer le daemon Docker »Objectif. Tu distingueras une commande installée d’un moteur réellement actif.
État du projet avant cette étape. Les paquets sont présents. Le daemon peut toutefois être arrêté.
Comprendre le changement
Section intitulée « Comprendre le changement »La commande docker est un client. Elle parle au daemon dockerd, géré ici par systemd. enable prépare les prochains démarrages ; –now démarre immédiatement.
Faire une seule chose
Section intitulée « Faire une seule chose »Active Docker, puis demande à systemd un résultat binaire et lis les premières lignes de docker info avec sudo.
sudo systemctl enable --now docker
sudo systemctl is-active docker
sudo docker info | sed -n '1,20p'Ce que fait chaque partie
- systemctl enable prépare le démarrage automatique.
- --now démarre le service sans attendre un reboot.
- is-active doit répondre active.
- docker info contacte réellement le daemon.
is-active affiche active et docker info contient une section Server.
Si cela échoue
Si le service est failed, lance sudo journalctl -u docker --no-pager -n 50 et lis la première erreur.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 12 — Autoriser ton utilisateur à lancer Docker
Section intitulée « Étape 12 — Autoriser ton utilisateur à lancer Docker »Objectif. Tu éviteras de préfixer toutes les commandes du projet par sudo.
État du projet avant cette étape. Docker fonctionne avec sudo. Ton utilisateur ordinaire n’a peut-être pas encore accès au socket du daemon.
Comprendre le changement
Section intitulée « Comprendre le changement »Le groupe docker donne accès au socket Docker. Cette permission équivaut pratiquement à des droits administrateur sur la VM : elle doit rester limitée à ton utilisateur.
Faire une seule chose
Section intitulée « Faire une seule chose »Ajoute ton utilisateur au groupe, ferme complètement sa session terminal puis reconnecte-toi dans la VM. Vérifie ensuite les groupes sans sudo.
sudo usermod -aG docker "$USER"Ce que fait chaque partie
- usermod modifie les groupes de l’utilisateur.
- -aG ajoute docker sans retirer les autres groupes.
- $USER désigne l’utilisateur connecté.
La commande ne produit normalement aucune sortie.
Si cela échoue
Ne lance pas chmod 777 sur /var/run/docker.sock : reconnecte-toi après avoir ajouté le groupe.
id -nG
docker info >/dev/null && echo "daemon accessible sans sudo"Ce que fait chaque partie
- id -nG affiche les groupes actifs de cette nouvelle session.
- docker info sans sudo prouve l’accès au daemon.
- && affiche le message seulement si Docker répond.
docker apparaît dans les groupes et le message de confirmation s’affiche.
Si cela échoue
Si docker manque dans id -nG, la session n’a pas réellement été recréée ; déconnecte puis reconnecte l’utilisateur.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.
Étape 13 — Vérifier les trois outils
Section intitulée « Étape 13 — Vérifier les trois outils »Objectif. Tu prouveras Engine, Buildx et Compose séparément.
État du projet avant cette étape. Le daemon répond sans sudo.
Comprendre le changement
Section intitulée « Comprendre le changement »docker version teste client et serveur. docker buildx version teste le constructeur. docker compose version teste l’orchestrateur qui sera utilisé par Inception.
Faire une seule chose
Section intitulée « Faire une seule chose »Lance les trois commandes. Ne continue pas si l’une d’elles est absente.
docker version
docker buildx version
docker compose versionCe que fait chaque partie
- docker version affiche une partie Client et une partie Server.
- docker buildx version vérifie le plugin de build.
- docker compose version vérifie la syntaxe moderne avec un espace.
Les trois commandes affichent une version et aucune permission denied.
Si cela échoue
Si docker-compose avec un tiret existe mais docker compose échoue, le plugin docker-compose-plugin manque.
Prouver que c’est correct
Section intitulée « Prouver que c’est correct »Question de soutenance — Engine et Compose sont-ils la même chose ?
Non. Engine construit et exécute les objets Docker ; Compose lit un plan qui orchestre plusieurs services.