La fondation
Acte 1 : le WordPress de la petite entreprise vit à nu sur sa machine. On l'emballe dans des conteneurs.
420-5A4-MT · Serveurs évolutifs · DockerDix visiteurs par jour, tout roule. Mais...
La petite entreprise vient de mettre son site en ligne : un WordPress hérité du cours de serveur, installé à la main. Dix visiteurs par jour, tout roule. Mais l'application vit à nu sur la machine : fragile, difficile à déplacer, impossible à cloner. Si la machine meurt, tout meurt avec elle. Premier réflexe de pro : l'emballer.
- Réinstaller ce WordPress ailleurs prendrait une journée de travail manuel.
- Chaque installation à la main est différente : la recette n'est écrite nulle part.
- Objectif du jour : comprendre l'emballage universel du logiciel, le conteneur.
Qu'est-ce qu'un conteneur ?
Un conteneur est une unité standard de logiciel qui regroupe une application et toutes ses dépendances (bibliothèques, configuration, exécutables), afin qu'elle s'exécute de façon fiable sur n'importe quelle machine : votre portable, une machine virtuelle, un serveur infonuagique.
Comme le conteneur de bateau : peu importe le contenu, la boîte a un format standard que tous les ports du monde savent manipuler.
Vu de la machine, un conteneur est un simple processus, mais enfermé : il ne voit que ses propres fichiers, processus et réseau. C'est le cloisonnement.
Conteneur ou machine virtuelle ?
- Un hyperviseur émule du matériel complet.
- Chaque VM embarque son propre système d'exploitation et son noyau.
- Lourde (gigaoctets), lente à démarrer (minutes), mais isolation très forte.
- Tous les conteneurs partagent le noyau Linux de la machine hôte.
- L'isolation est faite par le noyau lui-même, pas par du matériel émulé.
- Léger (mégaoctets), démarre en secondes, on en met des dizaines par machine.
Les deux ne se font pas concurrence : dans ce cours, vos conteneurs tourneront dans une machine virtuelle. L'emballage dans l'emballage, et c'est très courant en production.
Sous le capot : la prison applicative
Le noyau Linux sait isoler un processus depuis longtemps. Docker ne fait qu'assembler élégamment des mécanismes natifs :
Le conteneur ne voit que ses processus, ses montages de fichiers, son réseau et son nom d'hôte. Le reste du système lui est invisible.
Le noyau limite, compte et isole les ressources : processeur, mémoire, disque. Un conteneur gourmand ne peut pas affamer les autres.
La prison (jail) : enfermer un processus dans un répertoire dont il ne peut pas sortir. L'idée a grandi jusqu'aux conteneurs modernes.
L'image et le conteneur
- La recette : un modèle figé, en lecture seule.
- Se télécharge depuis un registre comme Docker Hub (ubuntu, mysql, wordpress...).
- Se partage : la même image donne le même résultat partout.
- Le plat cuisiné : une instance vivante de l'image.
- On peut en lancer dix à partir de la même image.
- Jetable : on le détruit et on le recrée sans remords.
Les volumes et la redirection de ports
Un conteneur est jetable : à sa destruction, tout ce qu'il contenait disparaît. Deux ponts le relient au monde réel :
Un répertoire qui survit au conteneur. Les données de la base et les fichiers du site y vivent en sécurité, hors de la boîte.
Le conteneur a son propre réseau. La redirection 80:80 relie le port de la machine à celui du conteneur pour que les visiteurs entrent.
Le cycle de vie et les journaux
Un conteneur naît, vit, s'arrête, repart, meurt. Six commandes pour tout piloter :
Les journaux (logs) sont vos yeux : un conteneur qui refuse de démarrer s'explique toujours dans ses journaux.
Avant de passer au laboratoire
- Un conteneur emballe une application et ses dépendances : il s'exécute pareil partout.
- Image = recette figée. Conteneur = instance vivante et jetable.
- Ce qui doit survivre vit dans un volume. Ce qui doit être joignable passe par un port.
- docker run, ps, stop, start, rm, logs : les six gestes du quotidien.
Au laboratoire : on installe Docker dans votre machine virtuelle, puis on emballe le site de la petite entreprise. D'abord tout-en-un, ensuite le web d'un côté et la base de données de l'autre.
Version de départ · ce diaporama va s'enrichir