Ouvrir ce guide depuis les prérequis du TP pour disposer du lien de retour.

OS de votre poste :
Module 05 · Docker DevOps · Guide de préparation

Préparer Docker pour les TP

Guide commun : préparer le moteur une seule fois, puis revenir au TP. Le parcours change avec l’OS de votre poste.

Vérifier Linux et relever l’état initial

Préparer d’abord le compte student et le groupe devops avec Guide : Préparer Linux pour les TP.

Ce parcours utilise Docker Engine natif sur Ubuntu/Debian. Réutiliser un moteur déjà opérationnel. Internet et un accès sudo sont nécessaires.

cat /etc/os-release
command -v docker || true
dpkg-query -W -f='${binary:Package} ${Version}\n' > "$HOME/docker-paquets-avant.txt"
ls -l /etc/apt/sources.list.d/docker* /etc/apt/keyrings/docker* 2>/dev/null || true
systemctl is-active docker || true

la distribution, le service éventuel, les paquets et les fichiers de dépôt. Conserver la liste des composants ajoutés dans vos notes. Si un dépôt Docker, Docker Desktop, docker.io, podman-docker, containerd ou runc existe déjà, ne pas exécuter aveuglément l’installation ci-dessous : suivre les consignes de compatibilité officielles sans supprimer un service utilisé.

Installer Docker Engine depuis le dépôt officiel

Uniquement sur un poste Ubuntu/Debian sans moteur ni dépôt Docker préexistant. Les commandes suivantes s’exécutent dans un nouveau terminal Bash dédié à l’installation. Elles ajoutent le dépôt Docker et les paquets du moteur. Les fichiers docker.asc et docker.sources ne doivent pas exister ; les commandes les écriraient.

set -e
. /etc/os-release
case "$ID" in ubuntu|debian) ;; *) echo "Distribution non prise en charge"; exit 1 ;; esac
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL "https://download.docker.com/linux/$ID/gpg" -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/$ID
Suites: $VERSION_CODENAME
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

APT télécharge les paquets depuis download.docker.com ; sur Ubuntu/Debian le service est normalement démarré. Fermer le terminal d’installation après réussite pour retrouver votre shell habituel.

Échec APT, conflit de paquets ou service absent

Lire l’erreur exacte, vérifier l’OS, l’architecture, le dépôt, l’espace disque et les verrous APT. Ne pas supprimer un verrou actif ni purger un moteur existant. Reprendre avec Ubuntu ou Debian.

Autoriser student et vérifier Docker

Depuis un compte administrateur, ajouter student au groupe docker :

Terminal Linux

sudo usermod -aG docker student

Le groupe docker donne des droits comparables à root sur ce moteur. Fermer la session student, puis en ouvrir une nouvelle pour actualiser les groupes :

Terminal Linux

su - student
id
docker version
docker compose version
docker run --rm hello-world

Docker doit afficher Client et Server ; Compose doit être disponible. --rm retire le conteneur d’essai, mais conserve son image pour un usage ultérieur.

Préparer Kubernetes avec kind au cours correspondant

Engine n’a pas de bouton « Enable Kubernetes ». Au moment du cours Kubernetes, installer kind et kubectl selon les procédures officielles, en adaptant l’architecture et en vérifiant les téléchargements. Le moteur doit être utilisable avec votre compte, sans sudo. Ne pas créer ce cluster pour commencer le TP SSH.

Dans un dossier neuf réservé à ce cluster, enregistrer le fichier devops-rncp-kind.yaml :

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker

Terminal Linux :

kind create cluster --name devops-rncp --config devops-rncp-kind.yaml --wait 5m
kubectl --context kind-devops-rncp get nodes -o wide

deux nœuds Ready, un control plane et un worker. Ce sont des conteneurs, pas des VM générales. Si ce nom existe déjà, inspecter le cluster avant de relancer ou supprimer quoi que ce soit.

Retirer les ressources puis désinstaller facultativement

Ordre de nettoyage : arrêter les applications du TP, retirer seulement leurs conteneurs/réseaux/volumes, conserver les données utiles, puis décider si le moteur doit rester pour la suite. Si le cluster nommé a été créé uniquement pour ce parcours et n’est plus utile :

kind delete cluster --name devops-rncp

Supprimer son fichier YAML et les binaires kind/kubectl seulement s’ils ont été ajoutés exclusivement pour ce parcours ; préserver les autres contextes kubeconfig. Ne pas exécuter de prune global.

Si Docker Engine a été ajouté uniquement ici et doit vraiment être retiré, comparer avec docker-paquets-avant.txt, vérifier qu’aucun autre service n’en dépend puis simuler le retrait :

sudo apt-get -s remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Si le plan ne retire que les paquets ajoutés et aucun composant préexistant, exécuter la même commande sans -s. Sinon, conserver le moteur et analyser les dépendances. Retirer docker.sources et docker.asc seulement s’ils ont été créés par cette installation ; retirer l’appartenance au groupe docker uniquement si elle a été ajoutée ici (sudo gpasswd -d "$USER" docker, puis reconnexion).

le moteur retiré ne répond plus ; les autres services du poste restent disponibles. Les données de /var/lib/docker et /var/lib/containerd peuvent rester pour éviter une perte : les inventorier et ne les supprimer que si elles appartiennent exclusivement au laboratoire et ont été sauvegardées. Aucun autoremove, purge ou effacement global automatique n’est prévu.