« Pour tester un serveur web, il faut d’abord l’installer et le configurer pendant des heures. »
Avec Docker, un serveur web fonctionnel démarre en une commande. On va mettre en ligne Nginx, le rendre accessible depuis ton navigateur, puis lui faire servir tes propres pages. C’est le début de l’application fil rouge du projet : SORIA Web.
À la fin de ce module, tu sauras…
- Lancer un service web conteneurisé et l’exposer sur un port
- Comprendre la publication de ports (hôte ↔ conteneur)
- Servir tes propres fichiers via un montage
- Lire les journaux d’un service en direct
01Nginx en une commande
Lancer, et échouer utilement
Manipuledocker run -d --name web nginxLe conteneur tourne. Essaie de le joindre depuis la VM hôte :
Manipulecurl http://localhost:80Observecurl: (7) Failed to connect to localhost port 80: Connection refusedComprends le réseau du conteneur est isolé
Par défaut, un conteneur a son propre réseau isolé. Nginx écoute sur le port 80 à l’intérieur du conteneur, mais rien ne relie ce port à l’hôte. Il faut publier le port explicitement.
02Publier le port
Relier un port de l’hôte au conteneur
Manipuledocker rm -f web
docker run -d --name web -p 8080:80 nginx
curl -I http://localhost:8080ObserveHTTP/1.1 200 OK
Server: nginxdebian-gui, ouvre http://<ip-du-serveur>:8080 : la page d’accueil de Nginx s’affiche dans le navigateur.Comprends -p hôte:conteneur
-p 8080:80 relie le port 8080 de l’hôte au port 80 du conteneur. Le trafic qui arrive sur 8080 est transmis à Nginx. La règle : à gauche l’hôte, à droite le conteneur. C’est ainsi qu’un service conteneurisé devient accessible depuis le réseau.
03Servir tes propres pages (SORIA Web)
Monter ton site dans le conteneur
Manipulemkdir -p ~/soria-web
echo "<h1>SORIA Web — ma première mise en ligne</h1>" > ~/soria-web/index.html
docker rm -f web
docker run -d --name web -p 8080:80 -v ~/soria-web:/usr/share/nginx/html:ro nginx
curl http://localhost:8080Observe<h1>SORIA Web — ma première mise en ligne</h1>index.html côté hôte, recharge : le changement est immédiat, sans reconstruire le conteneur.Comprends le montage en lecture seule
On monte ton dossier sur /usr/share/nginx/html, l’emplacement où Nginx cherche les pages. Le suffixe :ro (read-only) empêche le conteneur de modifier tes fichiers — bonne pratique de sécurité quand le conteneur n’a besoin que de lire.
04Regarder le service vivre (logs)
Suivre les journaux en direct
Manipuledocker logs -f webLaisse tourner, et depuis un autre terminal (ou le navigateur) fais quelques requêtes sur http://localhost:8080.
172.17.0.1 - - [.. ] "GET / HTTP/1.1" 200
172.17.0.1 - - [.. ] "GET /favicon.ico HTTP/1.1" 404Ctrl+C arrête le suivi (pas le conteneur). C’est ta première fenêtre d’observabilité.Comprends où vont les logs, et pourquoi
Un conteneur bien conçu écrit ses journaux sur la sortie standard, et Docker les capture (docker logs). C’est un principe clé : le conteneur ne gère pas ses fichiers de log lui-même ; il « parle », et la plateforme écoute. On s’appuiera là-dessus au module observabilité.
✓Ce que tu retiens
Tu as mis en ligne un vrai service : publication de port (-p hôte:conteneur) pour le rendre accessible, montage pour servir tes propres fichiers, logs pour l’observer. « SORIA Web » existe maintenant — servi par un conteneur.
Mets SORIA Web en ligne
À faire
- Crée une vraie page d’accueil dans
~/soria-web/index.html(titre, quelques paragraphes). - Sers-la avec Nginx sur le port
8080, en montage lecture seule. - Ouvre-la depuis
debian-guidans le navigateur. - Suis les logs et repère tes propres requêtes.
- Explique en 2 lignes la différence entre le port de l’hôte et celui du conteneur.
?Auto-évaluation
1. Que fait -p 8080:80 ?
Il relie le port 8080 de l’hôte au port 80 du conteneur : le trafic arrivant sur 8080 est transmis à Nginx.
2. Pourquoi curl localhost:80 échouait au premier essai ?
Le port du conteneur n’était pas publié vers l’hôte : le réseau du conteneur est isolé par défaut.
3. À quoi sert le suffixe :ro dans un montage ?
Il monte le dossier en lecture seule : le conteneur peut lire mais pas modifier les fichiers de l’hôte.