Aller au contenu

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.

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.

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.

Affiche ces informations. Continue avec les commandes Debian uniquement si ID=debian. Pour Ubuntu, utilise la page officielle Ubuntu équivalente.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
. /etc/os-release
echo "distribution=$ID version=$VERSION_ID codename=$VERSION_CODENAME"
dpkg --print-architecture
Ce que fait chaque partie
  1. . /etc/os-release charge les informations système dans le shell.
  2. echo affiche les trois valeurs utiles sans modifier la VM.
  3. dpkg --print-architecture affiche par exemple amd64 ou arm64.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

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.

Actualise APT puis installe uniquement les outils de base. Aucun composant Docker n’est installé à cette étape.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
sudo apt update
sudo apt install -y ca-certificates curl git make
Ce que fait chaque partie
  1. sudo exécute la commande avec les droits administrateur.
  2. apt update actualise le catalogue.
  3. apt install ajoute les quatre outils.
  4. -y accepte la confirmation d’installation.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

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.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
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é"
fi
Ce que fait chaque partie
  1. dpkg-query recherche uniquement les paquets réellement installés.
  2. conflicts mémorise leurs noms sans modifier la VM.
  3. Le if lance apt remove seulement si la liste n’est pas vide.
  4. Cette étape évite que deux installations gèrent les mêmes binaires ou le même runtime.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

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.

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
À EXÉCUTER DANSDans la VM · n’importe quel dossier
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.asc
Ce que fait chaque partie
  1. install -d crée le dossier avec le mode 0755.
  2. curl -fsSL télécharge la clé et échoue proprement en cas d’erreur HTTP.
  3. -o choisit le fichier de destination.
  4. chmod a+r autorise APT à lire la clé.
  5. ls confirme l’existence et les permissions.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

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.

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
À EXÉCUTER DANSDans la VM · n’importe quel dossier
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.sources
Ce que fait chaque partie
  1. tee écrit le fichier avec les droits sudo.
  2. Suites prend le codename réel de Debian.
  3. Architectures reprend l’architecture vérifiée.
  4. Signed-By associe ce dépôt à la clé Docker.
  5. cat permet de relire le résultat avant utilisation.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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é.

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.

Actualise APT une dernière fois puis installe les cinq paquets ensemble.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Ce que fait chaque partie
  1. Le premier apt update charge le nouveau dépôt.
  2. docker-ce installe le daemon Docker Engine.
  3. docker-ce-cli installe la commande docker.
  4. containerd.io fournit le runtime.
  5. buildx et compose ajoutent les deux plugins CLI.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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é.

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.

Active Docker, puis demande à systemd un résultat binaire et lis les premières lignes de docker info avec sudo.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
sudo systemctl enable --now docker
sudo systemctl is-active docker
sudo docker info | sed -n '1,20p'
Ce que fait chaque partie
  1. systemctl enable prépare le démarrage automatique.
  2. --now démarre le service sans attendre un reboot.
  3. is-active doit répondre active.
  4. docker info contacte réellement le daemon.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

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.

Ajoute ton utilisateur au groupe, ferme complètement sa session terminal puis reconnecte-toi dans la VM. Vérifie ensuite les groupes sans sudo.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
sudo usermod -aG docker "$USER"
Ce que fait chaque partie
  1. usermod modifie les groupes de l’utilisateur.
  2. -aG ajoute docker sans retirer les autres groupes.
  3. $USER désigne l’utilisateur connecté.
Résultat attendu

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.

À EXÉCUTER DANSDans un nouveau terminal de la VM après reconnexion
id -nG
docker info >/dev/null && echo "daemon accessible sans sudo"
Ce que fait chaque partie
  1. id -nG affiche les groupes actifs de cette nouvelle session.
  2. docker info sans sudo prouve l’accès au daemon.
  3. && affiche le message seulement si Docker répond.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.

Objectif. Tu prouveras Engine, Buildx et Compose séparément.

État du projet avant cette étape. Le daemon répond sans sudo.

docker version teste client et serveur. docker buildx version teste le constructeur. docker compose version teste l’orchestrateur qui sera utilisé par Inception.

Lance les trois commandes. Ne continue pas si l’une d’elles est absente.

À EXÉCUTER DANSDans la VM · n’importe quel dossier
docker version
docker buildx version
docker compose version
Ce que fait chaque partie
  1. docker version affiche une partie Client et une partie Server.
  2. docker buildx version vérifie le plugin de build.
  3. docker compose version vérifie la syntaxe moderne avec un espace.
Résultat attendu

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.

Preuves de validation 0 / 3

Une case correspond à une preuve observée ou expliquée, pas simplement à une commande copiée.

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.