DOCKER - 7 Serveur Web Nginx v 2
Commençons par une distinction cruciale : une image est un ensemble de fichiers binaires, bibliothèques et code source qui composent votre application. Un conteneur est une instance en cours d'exécution de cette image. Vous pouvez avoir plusieurs conteneurs basés sur la même image. Dans cette leçon, nous utilisons l'image Nginx, un serveur web open source. Les images sont stockées dans des registres, véritables GitHub pour les conteneurs. Le registre par défaut de Docker est Docker Hub, accessible sur hub.docker.com.
Pour lancer un conteneur Nginx, la commande est simple :
docker run -p 80:80 nginx
En arrière-plan, Docker recherche l'image Nginx localement. S'il ne la trouve pas, il la télécharge depuis Docker Hub et la cache. Sans spécifier de version, Docker utilise la dernière (latest). Ensuite, un nouveau conteneur est lancé basé sur cette image. L'option -p 80:80 mappe le port 80 de votre machine au port 80 du conteneur. Quand vous visitez http://localhost, le trafic est automatiquement transféré au port 80 du conteneur, et Nginx répond avec sa page par défaut.
Vous pouvez lister les conteneurs en cours avec docker ps. Pour arrêter un conteneur, utilisez docker stop <id> (les 3 premiers caractères de l'ID suffisent). Pour voir tous les conteneurs, même arrêtés, tapez docker ps -a. Pour supprimer un conteneur arrêté, utilisez docker rm <id>. Si vous voulez forcer la suppression même quand il tourne, ajoutez le flag -f. En quelques minutes, vous avez déployé, arrêté et nettoyé un serveur web complet, démontrant la puissance et la simplicité de Docker.
En résumé
Cette leçon explore les fondamentaux de Docker en mettant en pratique le serveur web Nginx. Vous apprendrez la différence cruciale entre les images Docker (fichiers binaires, librairies, code source) et les conteneurs (instances en cours d'exécution), puis gérerez des conteneurs en les démarrant, arrêtant et supprimant. En quelques minutes, vous téléchargerez et exécuterez un serveur web Nginx préconfigurés sur le port 80, avant de nettoyer vos conteneurs — démonstration concrète du cycle de vie Docker.
Points clés
- Images vs Conteneurs : une image est statique (fichiers binaires, librairies, code source), tandis qu'un conteneur est une instance dynamique en cours d'exécution — vous pouvez créer plusieurs conteneurs à partir de la même image
- Registres Docker : Docker Hub est le registre par défaut d'où sont extraites les images (équivalent à GitHub pour le code source), accessible sur hub.docker.com
- Commandes de gestion des conteneurs : docker container ls (affiche les conteneurs actifs), docker container ls -a (affiche tous les conteneurs), docker container stop (arrête un conteneur), docker container rm (supprime un conteneur)
- Mapping de ports : la commande docker run -p 80:80 envoie le trafic du port 80 local vers le port 80 du conteneur, permettant l'accès au serveur web Nginx via localhost
- Cycle de vie complet : télécharger une image, créer et exécuter un conteneur, vérifier son état via les journaux et processus, puis nettoyer en arrêtant et supprimant les conteneurs
- Sécurité des conteneurs : impossible de supprimer un conteneur en cours d'exécution (mesure de sécurité) — utiliser docker container stop ou docker container rm -f pour forcer
Questions fréquentes
Quelle est la différence entre une image Docker et un conteneur ?
Une image Docker est un ensemble statique de fichiers binaires, librairies et code source qui constituent votre application. Un conteneur est une instance en cours d'exécution de cette image — c'est l'application qui tourne réellement. Vous pouvez créer plusieurs conteneurs différents à partir de la même image.
Comment accéder au serveur web Nginx en local après son lancement dans Docker ?
Une fois que vous avez exécuté un conteneur Nginx avec le port 80 mappé (docker run -p 80:80 nginx), ouvrez votre navigateur et allez sur http://localhost:80 ou simplement http://localhost. Le trafic HTTP local est automatiquement transféré vers le serveur Nginx qui tourne dans le conteneur.
Pourquoi je ne peux pas supprimer un conteneur qui est en cours d'exécution ?
C'est une mesure de sécurité de Docker qui empêche la suppression accidentelle de conteneurs actifs. Vous devez d'abord l'arrêter avec docker container stop <id>, puis le supprimer avec docker container rm <id>, ou utiliser docker container rm -f <id> pour forcer la suppression d'un conteneur encore actif.