Cours RechercherCtrl K

Docker Leçon 1

Pourquoi Docker ?

Images, conteneurs, registre : les trois idées de Docker, et ton premier conteneur.

15 min

À la fin de cette leçon, tu sauras

  • Comprendre ce qu'est un conteneur, et ce qu'il n'est pas
  • Distinguer une image d'un conteneur
  • Lancer ses premiers conteneurs

« Chez moi, ça marche »

Un site PHP a besoin de PHP 8.3, de certaines extensions, d'une base de données dans la bonne version… Installer tout ça à la main sur chaque serveur est long, et deux sites qui veulent deux versions de PHP différentes se marchent dessus.

Docker range chaque application dans un conteneur : une boîte isolée qui contient le programme et tout ce dont il a besoin. Le même conteneur tourne à l'identique sur ton PC, sur le serveur de test et sur le serveur en ligne.

Les trois mots à connaître

  • une image est un modèle figé, en lecture seule : « nginx 1.27 sur Alpine Linux », « PHP 8.3 avec FPM ». C'est la recette ;
  • un conteneur est une image en train de tourner. On peut lancer dix conteneurs à partir de la même image. C'est le plat ;
  • un registre est l'endroit où l'on télécharge les images. Le plus connu est Docker Hub.

Conteneur ou machine virtuelle ? Une machine virtuelle simule un ordinateur complet, avec son propre système. Un conteneur partage le noyau Linux du serveur : il démarre en une seconde et ne pèse que quelques mégaoctets.

Premier conteneur

docker run hello-world             # télécharge l'image, crée un conteneur, l'exécute
docker run alpine echo "Bonjour"   # un mini-Linux qui affiche Bonjour puis s'arrête
docker ps                          # les conteneurs EN MARCHE
docker ps -a                       # TOUS les conteneurs, même arrêtés
docker images                      # les images téléchargées

Un conteneur vit tant que son programme principal tourne. echo se termine tout de suite, donc le conteneur passe à l'état Exited (0) : 0 veut dire « terminé sans erreur ». Un serveur web, lui, tourne en continu : on le verra à la leçon suivante.

Sur ton serveur : on installe Docker avec sudo apt install docker.io (ou le paquet officiel docker-ce). Pour l'utiliser sans sudo, on ajoute son compte au groupe docker : sudo usermod -aG docker eleve. Ici, c'est déjà fait.

À retenir

  • Une image est le modèle (la recette), un conteneur est une image qui tourne (le plat).
  • Les images viennent d'un registre, en général Docker Hub.
  • Un conteneur partage le noyau du serveur : plus léger et plus rapide qu'une machine virtuelle.
  • Il vit tant que son programme principal tourne ; Exited (0) = terminé sans erreur.
  • docker ps (en marche), docker ps -a (tous), docker images.

Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)

À toi de jouer · Bonjour, Docker

Facile
  1. vérifie la version de Docker ;
  2. lance le conteneur de test hello-world et lis son message ;
  3. lance un conteneur alpine qui affiche Bonjour ;
  4. affiche tous les conteneurs, y compris ceux qui sont arrêtés ;
  5. affiche les images téléchargées.
commandes.sh
eleve@cours: ~

Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.

Consignes à réussir

  • À faire : La version de Docker est affichée
  • À faire : L'image hello-world est téléchargée
  • À faire : Un conteneur alpine a affiché Bonjour
  • À faire : Le conteneur alpine s'est terminé
  • À faire : Tous les conteneurs sont affichés (docker ps -a)
  • À faire : Les images sont affichées
Toujours bloqué ? Voir une solution
docker --version
docker run hello-world
docker run alpine echo "Bonjour"
docker ps -a
docker images

Quiz

1Quelle est la différence entre une image et un conteneur ?
2Pourquoi le conteneur alpine echo Bonjour est-il arrêté juste après ?
3Où Docker télécharge-t-il les images par défaut ?