Énoncé officiel : trois laboratoires Docker et une expérimentation
pour emballer le site de la petite entreprise, du serveur artisanal à l'essaim.
25 % de la sessionIndividuelModule 1Du serveur artisanal à l'essaimLaboratoires semaines 2 à 4Démonstration semaine 5420-5A4-MT
Le scénario
La petite entreprise emballe son site
La petite entreprise vient de mettre son site en ligne : un WordPress
installé à la main, hérité du cours de serveur. Il fonctionne, mais il vit sans armure
sur sa machine : fragile, impossible à déplacer, impossible à cloner. Pendant que
les visiteurs se multiplient, l'entreprise apprend le geste fondateur du métier :
emballer l'application dans des conteneurs, la décrire dans une partition,
puis la faire jouer par tout un essaim de machines.
Ces laboratoires suivent la même application à travers trois architectures :
un seul conteneur, un conteneur par service, puis un essaim. La même application,
de plus en plus solide.
Votre mission
La même application, trois architectures
1
WordPress et MySQL sur un seul conteneur
➜
2
Un conteneur par service, avec Docker Compose
➜
3
WordPress répliqué sur un Docker Swarm
➜
+
Expérimentation : un conteneur from scratch
À chaque étape, la preuve vivante est la même : votre WordPress répond dans le
navigateur de la machine hôte, avec un article illustré publié dedans.
Nouveau cette année
Vos instances, votre choix d'infrastructure
Chaque noeud de ces laboratoires est une instance. Vous
choisissez le substrat qui la fournit, au lieu que VirtualBox soit imposé :
Machines virtuelles VirtualBox
La voie de référence : cloner UbuntuServerAlpha en
DockerAlpha (Ubuntu Server, 2 Go de mémoire vive, 12 Go de disque)
et y installer Docker et Docker Compose. Hors ligne et gratuit;
le plan d'adressage historique s'applique tel quel.
Conteneurs DinD
Docker dans Docker : chaque noeud est un conteneur
sur votre machine. Léger, rapide, gratuit, hors ligne. Idéal si votre
poste manque de mémoire vive pour cinq machines virtuelles.
VPS infonuagiques
De vrais serveurs loués à l'heure (Linode), dans la
même région, clés SSH et pare-feu obligatoires (ports de l'essaim
2377, 7946 et 4789 restreints à vos noeuds). Le plus authentique,
pour quelques cents l'heure.
Le TP est exactement le même dans les trois cas : mêmes
gestes Docker, mêmes livrables, même évaluation. L'orchestrateur se moque
du substrat, c'est d'ailleurs une leçon du cours.
Le choix pèse surtout au laboratoire 3 : l'essaim demande
cinq noeuds.
Justifiez votre choix en quelques phrases dans le
README.md (coût, mémoire disponible, réalisme,
dépendance au réseau). Analyser avant de monter, c'est déjà le métier.
Option VPS : des instances qui dorment coûtent des sous.
« Conserver ses instances » signifie alors : être capable de les recréer et de
les reconfigurer en quelques minutes par script, grâce aux configurations
gardées dans GitHub. À la démonstration, vous devez pouvoir relever l'ensemble
rapidement, devant témoin. Détruisez vos instances en fin de séance.
Les règles du jeu
Ce qui est exigé, sans exception
Travail individuel. Lien de l'assignment GitHub :
remis en classe.
Chaque partie de ce devoir doit pouvoir être
évaluée individuellement.
Les instances que vous créez pour chaque partie doivent être
conservées et fonctionnelles pour la démonstration
en classe. (Option VPS : reproductibles en minutes, voir plus haut.)
Pour sauver du temps, vous pouvez cloner les instances
des parties précédentes pour réaliser les suivantes. Quand vous clonez une
machine virtuelle, assurez-vous que l'adresse MAC réseau de la nouvelle
machine est différente de l'ancienne, et changez le nom d'hôte,
l'adresse IP, etc.
Il est recommandé de conserver les configurations de chaque
machine à l'externe (GitHub), au cas où vous auriez à recommencer
votre devoir rapidement.
La démonstration est nécessaire à la correction :
sans démonstration conforme en classe, la partie n'est pas évaluée.
Laboratoire 1 · Semaine 2
WordPress et MySQL sur un seul conteneur
4 pointsTutoriel : diaporama et laboratoire de la semaine 2
Mettre en place, en fonction du matériel de cours, une instance
(VirtualBox de référence : DockerAlpha, clone d'UbuntuServerAlpha avec
Docker et Docker Compose, 2 Go de mémoire vive, 12 Go de disque) qui héberge
WordPress et MySQL dans un seul conteneur :
Mise en place des répertoires de travail (volumes www et mysql).
Installation de l'image LAMP et lancement du conteneur
sans accaparer votre session (arrière-plan).
Configuration de la base de données MySQL de WordPress.
Barème :
Installation de l'application WordPress sur votre serveur HTTP (1 point)
Faire en sorte que WordPress puisse ajouter des répertoires pour les
fichiers téléchargés par les utilisateurs (1 point)
Afficher votre WordPress à partir de votre machine hôte (1 point)
Ajouter un article avec une image téléchargée, à partir de votre
machine hôte (1 point)
Laboratoire 2 · Semaine 3
WordPress avec un conteneur par service
10 pointsDocker ComposeTutoriel : diaporama et laboratoire de la semaine 3
Sur une instance aux mêmes caractéristiques, installer WordPress avec
un conteneur par service : un service HTTP et un service
MySQL, décrits dans un fichier docker-compose.yml (ports 8082 et 8083
pour phpMyAdmin, volumes de données, réseau interne).
Barème :
Installation de Docker Compose (1 point)
Création d'un répertoire pour la configuration de WordPress
avec Docker Compose (1 point)
Configuration de Docker Compose pour WordPress (1 point)
Exécution de WordPress avec Docker Compose (1 point)
Accéder à votre serveur WordPress à partir de votre machine hôte (1 point)
Ajout d'un article et d'une illustration dans WordPress
sur Docker Compose (4 points)
Arrêter et redémarrer WordPress sur Docker Compose et visualiser
le nouvel article illustré (1 point)
Laboratoire 3 · Semaine 4
WordPress sur un Docker Swarm
10 points5 noeudsTutoriel : diaporama et laboratoire de la semaine 4
Préparer cinq noeuds selon votre choix d'infrastructure,
nommés swarm-node01 à swarm-node05. Référence VirtualBox : cinq clones de
DockerAlpha (2 Go, 12 Go) avec les adresses 192.168.56.10, .20, .30, .40
et .50, les noms d'hôtes et le fichier hosts ajustés sur chaque machine.
En DinD ou VPS : cinq noeuds équivalents, plan d'adressage documenté dans
le README.md.
Créer le cluster Docker Swarm (init, join) et un réseau interne overlay.
Lancer le proxy inverse Traefik.
Lancer WordPress (service web répliqué, base MySQL ancrée).
Afficher l'essaim dans le visualiseur.
Barème (état affiché dans le visualiseur) :
1 conteneur Traefik (2 points)
3 conteneurs WordPress (2 points)
1 conteneur MySQL (2 points)
1 conteneur Visualiseur (2 points)
Ajouter un article avec une image et l'afficher
dans le navigateur (2 points)
Les instructions détaillées sont répétées dans le
tutoriel : respectez-les à la lettre, surtout l'adressage. Le premier
déploiement peut être long (téléchargement des images sur chaque noeud);
les journaux vous disent où ça en est.
Expérimentation · En classe
Conteneurs from scratch
1 pointUne période de 4 heures
C'est un laboratoire d'expérimentation : la présence en classe
pour le réaliser sur une seule période de travail (4 heures) est évaluée
seulement. Le fonctionnement correct final est souhaitable, mais pas
nécessaire.
Mettre en place un conteneur from scratch (à la main,
sans Docker : prison chroot, montages, isolation) qui permet d'exécuter
une commande simple autre que nano.
Expérimenter jusqu'à la diapositive 67 du tutoriel seulement.
C'est l'occasion de voir ce que Docker fait pour vous : après avoir monté
une prison à la main, docker run ne sera plus jamais magique.
Semaine 5
La démonstration
En classe, à la semaine 5, chaque étudiant :
fait la démonstration de chaque laboratoire sur son poste de travail :
les trois architectures répondent, l'article illustré s'affiche;
présente ses configurations conservées dans GitHub;
peut expliquer chaque commande utilisée : l'IA a pu aider,
mais c'est votre tête qui répond.
Rappel : la démonstration est nécessaire à la correction.
Une partie non démontrée n'est pas évaluée.
La grille
Récapitulatif des points
Laboratoire
Points
1 · WordPress et MySQL sur un seul conteneur
4
2 · WordPress avec un conteneur par service (Compose)
10
3 · WordPress sur un Docker Swarm
10
Expérimentation · Conteneurs from scratch
1
Total : 25 points · 25 % de la session
Le consultant
L'IA dans ces laboratoires
L'IA est permise pour comprendre, dépanner et accélérer : des prompts
d'accompagnement sont fournis pour les parties avancées.
La règle du cours s'applique : quand l'IA produit une commande ou une
configuration, vous devez pouvoir expliquer ce qu'elle fait avant
de l'exécuter. La démonstration le vérifiera.