Semaine 2 · Diaporama de notions

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 · Docker
Où en est l'histoire

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

Notion 1

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.

La métaphore maritime

Comme le conteneur de bateau : peu importe le contenu, la boîte a un format standard que tous les ports du monde savent manipuler.

Le processus prisonnier

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.

Notion 2

Conteneur ou machine virtuelle ?

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.
Conteneur
  • 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.

Notion 3

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 :

Espaces de nommage

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.

Cgroups

Le noyau limite, compte et isole les ressources : processeur, mémoire, disque. Un conteneur gourmand ne peut pas affamer les autres.

L'ancêtre chroot

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.

Notion 4

L'image et le conteneur

L'image
  • 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 conteneur
  • 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.
# telecharger une image, puis lancer un conteneur
docker pull ubuntu
docker run ubuntu echo bonjour
bonjour
Notion 5

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 :

Le volume (-v)

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 port (-p)

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.

# -v hote:conteneur -p hote:conteneur
docker run -p 80:80 -v ${PWD}/www:/app monimage
Notion 6

Le cycle de vie et les journaux

Un conteneur naît, vit, s'arrête, repart, meurt. Six commandes pour tout piloter :

docker run -d --name monsite monimage
# -d : en arriere-plan, la session reste libre
docker ps
# les conteneurs en marche (-a : aussi les arretes)
docker stop monsite
docker start monsite
docker rm monsite
# et pour voir ce qui se passe dedans :
docker logs monsite

Les journaux (logs) sont vos yeux : un conteneur qui refuse de démarrer s'explique toujours dans ses journaux.

À retenir

Avant de passer au laboratoire

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