Comment utiliser la commande docker compose start pour démarrer des services

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce lab, vous apprendrez à utiliser la commande docker-compose start pour gérer vos applications multi-conteneurs Docker. Nous commencerons par créer un simple fichier docker-compose.yml pour définir nos services.

Après la création du fichier compose, vous pratiquerez le démarrage de tous les services qui y sont définis en utilisant une seule commande. Enfin, vous apprendrez comment démarrer sélectivement un service spécifique à partir de votre configuration compose. Cette expérience pratique vous dotera des compétences fondamentales pour gérer efficacement vos projets Docker Compose.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555092{{"Comment utiliser la commande docker compose start pour démarrer des services"}} docker/ps -.-> lab-555092{{"Comment utiliser la commande docker compose start pour démarrer des services"}} docker/start -.-> lab-555092{{"Comment utiliser la commande docker compose start pour démarrer des services"}} docker/stop -.-> lab-555092{{"Comment utiliser la commande docker compose start pour démarrer des services"}} docker/create -.-> lab-555092{{"Comment utiliser la commande docker compose start pour démarrer des services"}} docker/pull -.-> lab-555092{{"Comment utiliser la commande docker compose start pour démarrer des services"}} end

Créer un fichier docker-compose.yml simple

Dans cette étape, nous allons créer un fichier docker-compose.yml simple. Docker Compose est un outil pour définir et exécuter des applications multi-conteneurs Docker. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services à partir de votre configuration.

Avant de créer le fichier docker-compose.yml, nous devons installer Docker Compose. Comme il n'est pas préinstallé dans l'environnement LabEx, nous l'installerons en utilisant pip.

D'abord, mettons à jour la liste des paquets et installons pip s'il n'est pas déjà installé.

sudo apt update
sudo apt install -y python3-pip

Maintenant, nous pouvons installer Docker Compose en utilisant pip.

pip install docker-compose

Une fois l'installation terminée, vous pouvez vérifier l'installation en vérifiant la version de Docker Compose.

docker-compose --version

Vous devriez voir une sortie similaire à docker-compose version 1.29.2, build 5becea4c.

Maintenant que Docker Compose est installé, créons un répertoire pour notre projet et naviguons dedans. Nous créerons le fichier docker-compose.yml dans ce répertoire.

mkdir ~/project/my-compose-app
cd ~/project/my-compose-app

Ensuite, nous allons créer le fichier docker-compose.yml en utilisant l'éditeur nano.

nano docker-compose.yml

Dans l'éditeur nano, collez le contenu suivant. Ce fichier docker-compose.yml définit un service unique nommé web qui utilise l'image nginx et mappe le port 80 du conteneur vers le port 8080 sur la machine hôte.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

Décomposons ce fichier :

  • version: '3.8' spécifie la version du format de fichier Compose.
  • services: définit les différents services qui composent votre application.
  • web: est le nom de notre service. Vous pouvez choisir n'importe quel nom.
  • image: nginx:latest spécifie l'image Docker à utiliser pour ce service. Ici, nous utilisons la dernière version de l'image officielle Nginx. Nous téléchargerons cette image plus tard lorsque nous démarrerons le service.
  • ports: mappe les ports entre l'hôte et le conteneur.
  • - "8080:80" mappe le port 80 à l'intérieur du conteneur (où Nginx s'exécute par défaut) vers le port 8080 sur votre machine hôte. Cela signifie que vous pouvez accéder au serveur web Nginx en visitant http://localhost:8080 dans votre navigateur web (ou en utilisant curl depuis le terminal).

Enregistrez le fichier en appuyant sur Ctrl + X, puis Y, et enfin Entrée.

Vous pouvez vérifier le contenu du fichier en utilisant la commande cat.

cat docker-compose.yml

Vous devriez voir le contenu YAML que vous venez de coller.

Démarrer tous les services définis dans le fichier compose

Dans cette étape, nous allons démarrer tous les services définis dans notre fichier docker-compose.yml. Nous utiliserons pour cela la commande docker-compose up.

Tout d'abord, assurez-vous d'être dans le répertoire où vous avez créé le fichier docker-compose.yml.

cd ~/project/my-compose-app

Maintenant, exécutez la commande docker-compose up. Le flag -d permet d'exécuter les conteneurs en mode détaché, ce qui signifie qu'ils fonctionneront en arrière-plan sans bloquer votre terminal.

docker-compose up -d

Lorsque vous exécutez cette commande pour la première fois, Docker Compose va :

  1. Chercher le fichier docker-compose.yml dans le répertoire courant
  2. Lire les définitions des services
  3. Pour chaque service, vérifier si l'image spécifiée existe localement. Si ce n'est pas le cas, il téléchargera l'image depuis Docker Hub. Dans notre cas, il téléchargera l'image nginx:latest
  4. Créer et démarrer les conteneurs pour chaque service

Vous verrez une sortie indiquant que l'image est en cours de téléchargement et que le conteneur est créé et démarré.

Pulling web (nginx:latest)...
latest: Pulling from library/nginx
... (sortie montrant les couches de l'image en cours de téléchargement)
Status: Downloaded newer image for nginx:latest
Creating my-compose-app_web_1 ... done

Une fois la commande terminée, vous pouvez vérifier que le conteneur fonctionne avec la commande docker ps.

docker ps

Vous devriez voir une entrée pour le conteneur web, avec l'image nginx:latest et le statut Up. Le nom du conteneur sera similaire à my-compose-app_web_1.

Pour vérifier plus en détail que le serveur Nginx fonctionne et est accessible, vous pouvez utiliser la commande curl pour accéder au serveur web sur le port 8080 de la machine hôte.

curl http://localhost:8080

Vous devriez voir dans votre terminal le code HTML de la page d'accueil par défaut de Nginx. Cela confirme que le conteneur fonctionne et que le mappage de ports est correctement configuré.

Démarrer un service spécifique défini dans le fichier compose

Dans l'étape précédente, nous avons démarré tous les services définis dans notre fichier docker-compose.yml en utilisant docker-compose up. Dans cette étape, nous allons apprendre comment démarrer un service spécifique lorsque vous avez plusieurs services définis dans votre fichier Compose.

Bien que notre fichier docker-compose.yml actuel ne contienne qu'un seul service (web), la commande pour démarrer un service spécifique est utile lorsque vous avez une application plus complexe avec plusieurs services (comme un serveur web, une base de données et une API backend).

D'abord, arrêtons le service actuellement en cours d'exécution. Nous pouvons le faire en utilisant la commande docker-compose down. Cette commande arrête et supprime les conteneurs, réseaux et volumes créés par up.

Assurez-vous d'être dans le répertoire ~/project/my-compose-app.

cd ~/project/my-compose-app

Maintenant, exécutez la commande docker-compose down.

docker-compose down

Vous verrez une sortie indiquant que le conteneur et le réseau sont en cours d'arrêt et de suppression.

Stopping my-compose-app_web_1 ... done
Removing my-compose-app_web_1 ... done
Removing network my-compose-app_default

Vous pouvez vérifier que le conteneur est arrêté en exécutant docker ps. Il ne devrait y avoir aucun conteneur en cours d'exécution provenant de notre fichier compose.

docker ps

Maintenant, démontrons comment démarrer un service spécifique. La commande est docker-compose up <nom_du_service>. Dans notre cas, le nom du service est web. Nous utiliserons à nouveau le flag -d pour l'exécuter en mode détaché.

docker-compose up -d web

Cette commande ne démarrera que le service web tel que défini dans le fichier docker-compose.yml. Comme l'image a déjà été téléchargée lors de l'étape précédente, elle créera et démarrera directement le conteneur.

Vous verrez une sortie similaire à ceci :

Creating my-compose-app_web_1 ... done

À nouveau, vous pouvez vérifier que le conteneur web est en cours d'exécution en utilisant docker ps.

docker ps

Vous devriez voir le conteneur my-compose-app_web_1 listé avec un statut Up.

Ceci démontre comment démarrer sélectivement les services définis dans votre fichier docker-compose.yml, ce qui est utile pour gérer des applications multi-services plus complexes.

Résumé

Dans ce lab, nous avons appris à utiliser la commande docker-compose start. Nous avons commencé par créer un simple fichier docker-compose.yml. Cela a impliqué l'installation de Docker Compose via pip, la vérification de l'installation, la création d'un répertoire de projet, puis la création du fichier docker-compose.yml lui-même. Le fichier créé définissait un seul service nommé web utilisant l'image nginx avec un mappage de ports.

Les étapes suivantes, qui n'étaient pas entièrement détaillées dans le contenu fourni, concernaient l'utilisation de la commande docker-compose start pour soit démarrer tous les services définis dans le fichier compose, soit démarrer un service spécifique. Cela démontre la fonctionnalité principale de la commande docker-compose start pour gérer le cycle de vie des applications multi-conteneurs définies dans un fichier Compose.