Aller au contenu
Tendances

Épisode 03 / 9Les gestes essentiels25 min

Lancer son premier conteneur

Un vrai serveur Web qui tourne dans un conteneur, ouvert dans votre navigateur, observé, arrêté puis supprimé proprement.

Vous êtes sur

Dans cet épisode

  • Lancer un serveur Web dans un conteneur et l’ouvrir dans votre navigateur
  • Observer un conteneur : état, journaux, consommation
  • Distinguer arrêter, redémarrer et supprimer

hello-world s’est lancé, a parlé, puis s’est arrêté aussitôt. Cette fois, on lance un conteneur qui reste en marche : un serveur Web, Nginx.

Pourquoi Nginx ? Parce qu’il est petit, officiel et très répandu, et qu’il donne un résultat visible tout de suite, dans votre navigateur. On ne construit pas encore de site : Nginx sert de cobaye pour apprendre les gestes de base, sans rien installer directement sur votre système.

Étape 1 : lancer Nginx

C’est la commande décortiquée à l’épisode 1 :

docker run -d --name web-demo -p 127.0.0.1:8080:80 nginx:alpine

L’image n’est pas encore sur votre machine : Docker la télécharge, puis affiche une longue suite de chiffres et de lettres. C’est l’identifiant du conteneur, qui tourne désormais en arrière-plan.

Ouvrez http://127.0.0.1:8080 : la page « Welcome to nginx! » s’affiche. 127.0.0.1, que l’on écrit aussi localhost, est l’adresse de votre propre ordinateur, vue de l’intérieur.

Votre ordinateur Téléphonesur le Wi-Fi Navigateur127.0.0.1:8080 port 8080publié web-demo Nginx écoute le port 80 refusé : écoute limitée à 127.0.0.1
Le port publié relie votre ordinateur au conteneur. Avec 127.0.0.1, les autres appareils restent dehors.

Ouvrez Containers dans Docker Desktop : web-demo y apparaît, avec son port 8080:80 cliquable. Docker Desktop sait aussi lancer une image sans terminal (Images, bouton Run, puis Optional settings), mais cette méthode peut ouvrir le port à tout votre réseau local. La commande, elle, le garde sur votre PC.

Étape 2 : observer avant d’agir

Un bon diagnostic commence toujours par regarder. Ces commandes ne modifient rien :

docker ps
docker logs web-demo
docker stats --no-stream web-demo
docker inspect web-demo
CommandeCe qu’elle montre
docker psLes conteneurs en cours, leur état et leurs ports
docker logs web-demoCe que l’application a écrit : ici, une ligne par visite
docker stats --no-stream web-demoUn instantané du processeur et de la mémoire utilisés
docker inspect web-demoToute sa configuration, en détail (c’est long, c’est normal)

Petite expérience : actualisez la page Nginx deux ou trois fois, puis relancez docker logs web-demo. Une nouvelle ligne apparaît à chaque visite. Les journaux sont la première chose à lire quand un conteneur se comporte mal.

Dans Docker Desktop, cliquez sur web-demo : les onglets Logs, Inspect et Stats montrent les mêmes informations. Les intitulés peuvent varier légèrement d’une version à l’autre.

Étape 3 : arrêter, relancer, supprimer

Imagele modèle run En coursétat Up Arrêtéétat Exited stop start rm Suppriméplus de trace
stop arrête sans rien perdre ; seul rm fait disparaître le conteneur — jamais l’image.

Arrêtez le conteneur, constatez qu’il existe toujours, puis relancez-le :

docker stop web-demo
docker ps -a
docker start web-demo

Après docker stop, la page ne répond plus et docker ps ne montre plus rien. Mais docker ps -a affiche web-demo à l’état Exited : il est arrêté, pas supprimé. docker start le relance avec exactement le même nom et le même port.

Quand l’essai est fini, arrêtez-le puis supprimez-le :

docker stop web-demo
docker rm web-demo
docker image ls nginx

La dernière commande le prouve : l’image nginx:alpine est toujours là, prête pour le prochain lancement, qui ne demandera aucun téléchargement. Gardez-la, les épisodes suivants s’en servent.

docker rm -f web-demo fait les deux d’un coup, arrêt et suppression. C’est pratique pour un conteneur d’essai, mais sur un vrai service, l’arrêt en deux temps laisse à l’application le temps de se fermer proprement.

Testez-vous

3 questions pour vérifier que l’essentiel est acquis. Rien n’est noté ni enregistré.

  1. Quelle est la différence entre docker stop et docker rm ?

  2. docker ps ne montre pas votre conteneur. Où regarder ?

  3. Pourquoi écrire -p 127.0.0.1:8080:80 plutôt que -p 8080:80 ?

Vérifier que tout fonctionne

Cochez au fur et à mesure : quand tout est coché, vous pouvez passer à la suite.

Problèmes courants

« port is already allocated » ou « address already in use »

Un autre programme, ou un conteneur oublié, occupe déjà le port 8080 de votre ordinateur. Changez seulement le nombre de gauche : -p 127.0.0.1:8081:80, puis ouvrez http://127.0.0.1:8081. Le 80 de droite ne bouge pas : c’est la porte de Nginx, dans le conteneur.

« The container name "/web-demo" is already in use »

Un conteneur de ce nom existe encore, sans doute d’un essai précédent. Vérifiez avec docker ps -a, puis retirez-le avec docker rm -f web-demo s’il s’agit bien du vôtre.

La page ne s’affiche pas dans le navigateur

Lancez docker ps. Si web-demo n’apparaît pas, il s’est arrêté : docker ps -a et docker logs web-demo diront pourquoi. S’il apparaît, vérifiez la colonne PORTS (127.0.0.1:8080->80/tcp) et l’adresse tapée dans le navigateur.

Un forum conseille d’ajouter --privileged pour que ça marche

Ne le faites pas. Cette option donne au conteneur un accès presque total à votre machine. Aucun exercice de cette formation n’en a besoin, et ce n’est jamais une solution de dépannage.

Votre progression reste sur cet appareil, rien n’est envoyé.