Objectifs
- Expliquer le rôle de Docker Engine, de la CLI et du daemon.
- Distinguer une image, un container et un registry.
- Comparer l’isolation d’un container avec celle d’une machine virtuelle.
- Lancer et observer un premier container avec un port publié.
Comprendre Docker et son architecture
Docker permet de construire, distribuer et exécuter des applications dans des containers. Un container regroupe l’application et ses dépendances tout en partageant le noyau du système hôte.
Une machine virtuelle embarque généralement un système d’exploitation invité complet. Un container est souvent plus léger et démarre plus rapidement, mais il ne constitue pas automatiquement une frontière de sécurité équivalente à une VM.
Docker Engine, CLI et daemon
Docker Engine suit une architecture client-serveur. La commande docker est la CLI cliente. Elle appelle l’API du daemon dockerd, qui crée et gère les images, containers, réseaux et volumes.
- Docker CLI : interprète vos commandes et contacte le moteur.
- Docker daemon : exécute les opérations et maintient les objets Docker.
- Docker Engine : ensemble formé notamment du daemon, de ses API et de la CLI.
docker --version
docker infodocker ps
docker ps -a
docker imagesdocker info nécessite un daemon accessible. Un client installé ne signifie pas forcément que Docker Engine est démarré ou joignable.
Images, containers et registries
Une image est un modèle en lecture seule utilisé pour créer des containers. Un container est une instance exécutable de cette image avec son propre état d’exécution et une couche d’écriture.
Un registry stocke et distribue des images. Docker Hub est le registry public utilisé par défaut pour de nombreuses images, mais une entreprise peut aussi exploiter un registry privé.
docker run hello-worldSi l’image n’existe pas localement, docker run tente de la récupérer depuis le registry configuré avant de créer le container.
Du Dockerfile au container
Le Dockerfile décrit la construction. Le build produit une image versionnée, puis docker run crée et démarre un container à partir de cette image.
- -d détache le container et rend le terminal disponible.
- --name web attribue un nom lisible au container.
- -p 8080:80 publie le port 80 du container sur le port 8080 de l’hôte.
Dockerfile → Image → Containerdocker run -d --name web -p 8080:80 nginxBonnes pratiques
Commencez par observer l’état du moteur et des objets existants. N’exécutez pas une image inconnue avec des privilèges élevés et utilisez des noms explicites pour faciliter l’exploitation.
- Récupérer les images depuis des éditeurs ou registries de confiance.
- Publier uniquement les ports réellement nécessaires.
- Comprendre les options d’un exemple avant de l’adapter à la production.
Erreur fréquente : confondre image et container
Mini résumé
- La CLI contacte le daemon Docker via l’API du moteur.
- Une image sert de modèle à un ou plusieurs containers.
- Un registry distribue les images ; Docker Hub en est un exemple.
- -p 8080:80 relie le port 8080 de l’hôte au port 80 du container.
Mini quiz
Trois questions pour vérifier les notions essentielles de la leçon.