Exécuter votre premier service

DockerBeginner
Pratiquer maintenant

Introduction

Dans le développement logiciel moderne, les conteneurs sont devenus un moyen courant d’empaqueter et de déployer des applications. Un conteneur n’est pas une machine virtuelle complète. Il partage le noyau de la machine hôte, mais exécute l’application dans un environnement de processus isolé, avec sa propre vue du système de fichiers et sa propre configuration réseau.

Dans ce laboratoire, vous ferez vos premiers pas avec Docker en exécutant une application réelle : le serveur web Nginx. Cette expérience est utile, car de nombreux conteneurs ne servent pas à exécuter des commandes ponctuelles. Ils fonctionnent comme des services de longue durée ; vous devez donc comprendre leur cycle de vie.

Il s’agit d’une évolution importante par rapport à l’exemple hello-world. Au lieu d’utiliser un conteneur qui démarre, affiche un message, puis s’arrête, vous allez maintenant travailler avec un conteneur de service conçu pour rester actif tant que son processus principal s’exécute.

Vous apprendrez à :

  • Démarrer un conteneur en arrière-plan (mode détaché).
  • Afficher l’état de vos conteneurs en cours d’exécution.
  • Arrêter un conteneur lorsque vous n’en avez plus besoin.
  • Supprimer un conteneur pour libérer des ressources système.

À la fin de ce laboratoire, vous comprendrez le cycle de vie complet d’un conteneur Docker : création, exécution, arrêt et suppression.

Exécuter un serveur web en arrière-plan

Dans cette étape, vous allez lancer un serveur web Nginx.

Lorsque vous exécutez une commande dans le terminal, elle occupe généralement l’écran jusqu’à sa fin. Toutefois, pour un service tel qu’un serveur web, vous voulez qu’il fonctionne en continu en arrière-plan, afin de pouvoir continuer à utiliser votre terminal pour d’autres tâches. Dans Docker, on parle de « mode détaché ».

Nous utilisons l’option -d pour exécuter le conteneur en mode détaché. Nous utiliserons également l’option --name pour attribuer à notre conteneur un nom précis et facile à retenir.

Le mode détaché ne modifie pas ce que fait le conteneur. Il modifie la manière dont votre terminal y est attaché. Le service continue de fonctionner, mais l’invite de commande de votre shell réapparaît immédiatement.

Exécutez la commande suivante pour démarrer un conteneur Nginx nommé my-nginx :

docker run --name my-nginx -d nginx

Décomposition de la commande :

  • docker run : commande permettant de créer et de démarrer un nouveau conteneur.
  • --name my-nginx : attribue le nom « my-nginx » au conteneur. Si vous omettez cette option, Docker attribue un nom aléatoire tel que happy_hopper.
  • -d : exécute le conteneur en mode détaché (en arrière-plan).
  • nginx : image à utiliser. Docker la recherche localement ; si elle est absente, Docker la télécharge depuis Docker Hub.

La sortie :

Une longue chaîne de caractères s’affichera dans le terminal. Il s’agit de l’ID du conteneur. Le fait que votre invite de commande réapparaisse immédiatement confirme que le conteneur fonctionne en arrière-plan.

L’ID du conteneur est l’identifiant interne utilisé par Docker, tandis que le nom du conteneur est un libellé plus facile à utiliser. Dans la pratique quotidienne, les noms sont souvent plus simples à utiliser que de longs identifiants.

Vérifier l’état du conteneur

Maintenant que vous avez lancé le conteneur, vous devez vérifier qu’il fonctionne comme prévu. La commande docker ps affiche la liste de tous les conteneurs actifs.

Exécutez la commande suivante :

docker ps

Vous devriez obtenir une sortie similaire à celle-ci :

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS      NAMES
a1b2c3d4e5f6   nginx     "/docker-entrypoint.…"   10 seconds ago   Up 10 seconds   80/tcp     my-nginx

Comprendre la sortie :

  • CONTAINER ID : identifiant unique de ce conteneur (version abrégée de la longue chaîne affichée précédemment).
  • IMAGE : image en cours d’exécution (nginx).
  • STATUS : Up indique que le conteneur fonctionne correctement.
  • NAMES : nom que nous avons attribué (my-nginx).

Si cette entrée s’affiche, votre serveur web fonctionne correctement en arrière-plan !

La sortie de docker ps constitue l’une de vos principales vues opérationnelles. Elle vous indique quels conteneurs sont actuellement actifs, de quelle image ils proviennent et depuis combien de temps ils fonctionnent.

Arrêter le service

Lorsque vous avez terminé d’utiliser un service ou que vous devez le reconfigurer, vous devez arrêter le conteneur en cours d’exécution.

La commande docker stop envoie un signal au conteneur pour lui demander de s’arrêter correctement. Vous pouvez cibler le conteneur à l’aide de son ID ou de son nom. Comme nous l’avons nommé my-nginx, nous utiliserons son nom.

Un arrêt correct est important, car de nombreux services ont besoin de temps pour fermer leurs fichiers, libérer leurs ports ou terminer les opérations en cours. Arrêter un conteneur ne revient pas simplement à « l’éteindre » ; cela demande à son processus principal de se terminer proprement.

Exécutez la commande suivante :

docker stop my-nginx

Le terminal affichera my-nginx pour confirmer que la commande a été reçue.

Vérifier l’arrêt :

Exécutez de nouveau docker ps. La liste devrait être vide (ou my-nginx ne devrait plus y apparaître).

Pour confirmer que le conteneur existe toujours, mais qu’il est arrêté, utilisez l’option -a (all, tous) :

docker ps -a

Vous verrez alors my-nginx dans la liste, avec l’état Exited.

Nettoyer les ressources

Arrêter un conteneur ne le supprime pas. Il reste sur votre disque et conserve ses journaux ainsi que sa configuration. Cela peut être utile si vous souhaitez le redémarrer ultérieurement avec docker start.

Il s’agit d’une autre distinction importante du cycle de vie à retenir : créer/exécuter, arrêter et supprimer sont des opérations distinctes. Docker conserve ces états séparément afin que vous puissiez inspecter ou redémarrer les conteneurs avant de les supprimer.

Toutefois, si vous avez complètement terminé avec ce conteneur, vous devez le supprimer pour garder votre système propre. La commande docker rm supprime les conteneurs arrêtés.

Exécutez la commande suivante pour supprimer my-nginx :

docker rm my-nginx

Le terminal affichera my-nginx pour confirmer la suppression.

Vérification finale :

Exécutez une dernière fois docker ps -a. Vous constaterez que le conteneur a complètement disparu.

Remarque : en général, vous ne pouvez pas supprimer un conteneur en cours d’exécution avec docker rm. Vous devez d’abord l’arrêter, comme nous l’avons fait, ou utiliser l’option -f (force). Toutefois, il est préférable de l’arrêter correctement.

Résumé

Dans ce laboratoire, vous avez géré avec succès le cycle de vie complet d’un conteneur Docker. Vous avez appris à :

  • Exécuter un service en arrière-plan avec docker run -d.
  • Vérifier l’état des conteneurs actifs avec docker ps.
  • Arrêter correctement un service avec docker stop.
  • Supprimer un conteneur arrêté afin de libérer des ressources avec docker rm.

Ces quatre commandes font partie des commandes quotidiennes essentielles de tout utilisateur de Docker. Vous êtes maintenant prêt à découvrir plus en détail comment interagir avec les conteneurs en cours d’exécution.