0.1 · À quoi sert Docker : conteneurs vs machines virtuelles

Fondamentaux

0.1À quoi sert Docker : conteneurs vs machines virtuelles

Objectif : Comprendre ce qu'est un conteneur, ce que Docker apporte, et quand il ne suffit plus.
Temps estimé : 10 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Docker emballe l'application ET son environnement dans un paquet standard, le conteneur : fini le « ça marche sur ma machine ».
  • Le conteneur partage le noyau de l'hôte et n'isole que le nécessaire : démarrage en secondes, poids en mégaoctets — ce n'est pas une VM.
  • On exécute des images versionnées, identiques partout ; à grande échelle on ajoute un orchestrateur (Swarm, Kubernetes).

Mini-cas filé — Idir en a assez du « ça marche sur ma machine » à Alger

Idir, devops junior à Alger, livre un site qui tourne sur son portable mais casse sur le serveur de test : version de Node différente, Redis manquant, variable oubliée. Il applique la grille de la section : le problème vient de l'environnement, pas du code → il emballe l'application ET son environnement dans des images versionnées (site + cache Redis), lancées en conteneurs. Même image sur son portable, le serveur de test et la production : même comportement partout. Il note aussi la limite : pour deux conteneurs, Docker suffit ; pour des dizaines de services critiques, il faudra un orchestrateur.

Cas autonome de cette section : il revient dans le cours, le schéma, le script et le défi 48h de la section 0.1.

1. Le problème : « ça marche sur ma machine »

Une application dépend de sa version de langage, de ses bibliothèques, de son système et de sa configuration. Sur le poste du développeur tout fonctionne, en production tout casse. Docker répond à ce fléau en embarquant l'application ET son environnement dans un paquet standard : le conteneur. Idir retient l'image : le code voyage avec sa valise, pas seul.

2. Conteneur vs machine virtuelle : la vraie différence

Une machine virtuelle virtualise un ordinateur entier (système invité + noyau + ressources réservées) : c'est lourd et lent à démarrer. Un conteneur partage le noyau de l'hôte et n'isole que le nécessaire (processus, fichiers, réseau) : il démarre en secondes, pèse des mégaoctets et se multiplie facilement. C'est l'outil du microservice, pas le remplaçant universel du serveur. Idir tranche : même noyau et besoin léger → conteneur ; noyau différent ou isolement fort → VM.

3. Où Docker s'arrête

Docker emballe et exécute, il n'orchestre pas à grande échelle (c'est le rôle de Swarm ou Kubernetes), ne supervise pas et ne remplace ni la sauvegarde ni la sécurité système. Pour un poste, un petit serveur ou un pipeline CI, Docker suffit ; pour des dizaines de services critiques, on passe à un orchestrateur. Idir cadre son périmètre : Docker pour emballer et exécuter, l'orchestrateur plus tard.

Erreur d'interprétation fréquente : « Docker, c'est une VM légère : je mets l'appli, la base et le cache dans un seul conteneur, et il supervisera et sauvegardera tout ». Non, triple erreur. Un conteneur partage le noyau de l'hôte : ce n'est pas une VM, et pour un noyau différent ou un isolement fort, la VM reste pertinente. Un conteneur = un rôle (web, base, cache), pas tout l'empilement dans un seul. Et Docker emballe et exécute : il ne supervise pas et ne remplace ni la sauvegarde ni la sécurité système.
Du code au conteneur Le code et ses dépendances sont emballés en image, puis exécutés en conteneurs identiques partout. Code + dépendances Applicationet librairiesImage Docker PaquetversionnéConteneurs identiques Mêmecomportement partout
Le code et ses dépendances sont emballés en image, puis exécutés en conteneurs identiques partout.
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Idir, devops junior à Alger, comprend le fléau : son site marche sur son portable mais casse en test, car l'application dépend de son environnement (version de langage, bibliothèques, système, configuration). 2) Il emballe l'application ET son environnement dans une image Docker versionnée, exécutée en conteneurs identiques partout — là où la VM virtualiserait un ordinateur entier, lourde et lente, le conteneur partage le noyau de l'hôte et démarre en secondes. 3) Il retient la limite : Docker emballe et exécute (un conteneur = un rôle), mais n'orchestre pas à grande échelle, ne supervise pas et ne remplace ni sauvegarde ni sécurité système. Leçon : même image partout, et orchestrateur seulement quand l'échelle l'exige.

Le saviez-vous ? La cantine qui voyage

undefined
undefined
undefined
undefined
undefined
undefined

Même cantine partout, même goût partout.

🔎 Exemple concret — 🔎 Exemple concret — Un site qui tourne pareil partout

Idir livre un site Node 20 avec Redis : deux conteneurs depuis deux images versionnées, sans installer Node ni Redis sur la machine.

docker run -d -p 3000:3000 --name site mon-app:1.0
docker run -d --name cache redis:7

Lecture : deux conteneurs démarrés depuis deux images versionnées, sans installer Node ni Redis sur la machine.

Leçon : le portable, le serveur de test et la production exécutent exactement les mêmes images.

Vocabulaire de la section

Conteneur
Un processus isolé + son système de fichiers, démarré depuis une image.

Exemple simple : Idir lance le conteneur site depuis l'image mon-app:1.0.

Ce que ce n'est pas : une machine virtuelle complète avec son noyau.

Réflexe : léger, rapide, un rôle par conteneur.

Image
Le modèle immuable et versionné d'où naissent les conteneurs.

Exemple simple : Idir fige mon-app:1.0 : mêmes dépendances sur toutes les machines.

Ce que ce n'est pas : un conteneur vivant que l'on modifie.

Réflexe : toujours un tag de version explicite, jamais latest en production.

Docker Engine
Le moteur qui construit, stocke et exécute images et conteneurs.

Exemple simple : Idir vérifie que le moteur tourne avant de lancer son site.

Ce que ce n'est pas : la seule commande docker tapée au clavier.

Réflexe : moteur arrêté = aucun conteneur ne démarre.

Registre
Le dépôt d'images versionnées (Docker Hub, GHCR).

Exemple simple : Idir récupère redis:7 depuis le registre au lieu de l'installer.

Ce que ce n'est pas : le disque local de la machine.

Réflexe : nommer l'image avec son tag avant de la partager.

Port mapping
La redirection -p 3000:3000 entre la machine et le conteneur.

Exemple simple : Idir joint son site sur le port 3000 grâce au mapping 3000:3000.

Ce que ce n'est pas : le port interne seul, sans exposition.

Réflexe : injoignable ? vérifier le -p d'abord.

En pratique — En pratique — Situer Docker dans votre contexte

  1. Listez trois logiciels que vous installez péniblement (versions, conflits, docs), comme Idir avec Node et Redis.
  2. Pour chacun, dites si un conteneur versionné réglerait le problème.
  3. Repérez un cas où une VM resterait préférable (noyau différent, isolement fort).
  4. Formulez en une phrase ce que Docker va vous apporter.
Vous savez dire quand Docker est le bon outil — et quand il ne l'est pas.

Script pas-à-pas — cadrer le cas d'Idir avant d'installer (3 min)

1) Écrivez le duo d'Idir : application + environnement (ex. site Node 20 + Redis) qui diverge entre portable et serveur. 2) Découpez en rôles : un conteneur site, un conteneur cache — jamais tout dans un seul. 3) Notez l'image versionnée visée par rôle (ex. mon-app:1.0, redis:7) : même image sur toutes les machines. 4) Cochez la limite : 2 conteneurs → Docker suffit ; noyau différent ou isolement fort → VM ; dizaines de services → orchestrateur plus tard.

Gardez cette fiche : les sections 0.2 à 0.4 la transforment en commandes réelles.

Modèle copier-coller — ma fiche Docker ou VM ?

Cas : ___ (ex. site Node 20 + Redis d'Idir).
Rôles : [ ] site / [ ] base / [ ] cache → 1 conteneur par rôle.
Images versionnées : ___:___ + ___:___ (jamais latest en production).
Tranchant : [ ] même noyau + léger → conteneur / [ ] noyau différent ou isolement fort → VM.
Échelle : [ ] poste / petit serveur / CI → Docker suffit / [ ] dizaines de services → orchestrateur.

Site + cache

Idir livre son site Node 20 avec Redis : deux conteneurs versionnés, zéro installation locale de Node ou Redis.

Noyau différent

Idir doit tester un système au noyau différent : il garde une VM, le conteneur partageant le noyau de l'hôte.

Petit serveur

Deux ou trois services sur un petit serveur : Idir reste sur Docker, sans orchestrateur.

Pipeline CI

Chaque build rejoue les mêmes images versionnées : Idir élimine le « ça marche sur ma machine » de la CI.

✓ Bonnes pratiques

  • Pensez image versionnée : jamais de « latest » en production.
  • Visez un conteneur = un rôle (web, base, cache).
  • Connaissez la limite : l'orchestration, c'est l'étape d'après.

✗ Pièges fréquents

  • Croire que Docker = une VM légère (le noyau est partagé).
  • Mettre base + app + cache dans le même conteneur.
  • Attendre de Docker la supervision et la sauvegarde.

Points clés à retenir

  • Docker emballe l'app ET son environnement.
  • Le conteneur partage le noyau : léger et rapide.
  • On exécute des images versionnées, identiques partout.
  • À grande échelle, on ajoute un orchestrateur.

Défi 48h — appliquez demain

Remplissez la fiche Docker ou VM du modèle sur UN cas réel (celui d'Idir ou le vôtre) : rôles, images versionnées, tranchant conteneur/VM — en une phrase, dites ce que Docker va vous apporter.

Checklist sortie de section
  • Je peux expliquer en une phrase ce que Docker apporte (app + environnement, même image partout).
  • Je sais trancher conteneur (léger, même noyau) vs VM (noyau différent, isolement fort).
  • Je connais la limite : orchestration, supervision et sauvegarde sont hors Docker.
Auto-évaluation 1-5 : est-ce que j'explique la différence conteneur / VM sans jargon ?Auto-évaluation 1-5 : ai-je cadré un cas réel en rôles + images versionnées ?

Questions fréquentes

Docker remplace-t-il une machine virtuelle ?

Non : la VM isole un système complet avec son noyau, le conteneur partage celui de l'hôte. Pour des noyaux différents (Windows vs Linux) ou un isolement fort, la VM reste pertinente. Idir garde le réflexe : même noyau et besoin léger → conteneur ; sinon → VM.

Faut-il être administrateur système pour Docker ?

Non : les bases (run, ps, logs, volumes, Compose) s'apprennent en quelques heures. L'administration fine (réseaux, registres, sécurité) vient ensuite, niveau par niveau — exactement la progression de ce guide.

Vérifiez votre compréhension

Qu'est-ce qui fait la vraie force de Docker par rapport à une installation classique ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 0Questions inédites et durcies pour valider vos acquis