Comment utiliser la commande docker compose alpha dry-run pour tester des modifications

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 alpha dry-run pour tester les modifications apportées à votre configuration Docker Compose sans les exécuter réellement. Cet outil est précieux pour vérifier votre fichier docker-compose.yaml et comprendre l'impact potentiel des commandes avant de les appliquer.

Vous commencerez par préparer un fichier docker-compose.yaml simple. Ensuite, vous utiliserez l'option dry-run avec des commandes Docker Compose de base pour observer le résultat simulé et comprendre comment la commande se comporterait. Enfin, vous appliquerez dry-run à une commande qui modifierait normalement le système, vous permettant ainsi de voir les actions prévues sans altérer votre environnement.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/ps -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/create -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/pull -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/images -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/info -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/version -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} docker/network -.-> lab-555069{{"Comment utiliser la commande docker compose alpha dry-run pour tester des modifications"}} end

Préparer un fichier docker-compose.yaml simple

Dans cette étape, nous allons préparer un fichier docker-compose.yaml simple. Ce fichier définira un service basique que nous pourrons utiliser pour démontrer la fonctionnalité dry-run de Docker Compose.

Tout d'abord, nous devons installer Docker Compose. Comme il n'est pas préinstallé dans cet environnement, nous allons télécharger le binaire et le rendre exécutable.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Cette commande télécharge le binaire Docker Compose adapté à l'architecture de votre système et l'enregistre dans /usr/local/bin/docker-compose. La commande chmod +x rend le fichier exécutable.

Maintenant, vérifions que Docker Compose est correctement installé en contrôlant sa version.

docker-compose version

Vous devriez voir une sortie indiquant la version installée de Docker Compose.

Ensuite, nous allons créer un répertoire pour notre projet et nous y placer.

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

Nous sommes maintenant dans le répertoire ~/project/my-compose-app, où nous allons créer notre fichier docker-compose.yaml.

Maintenant, créons le fichier docker-compose.yaml en utilisant l'éditeur nano.

nano docker-compose.yaml

Dans l'éditeur nano, collez le contenu suivant :

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

Ce fichier docker-compose.yaml définit un seul service nommé web. Ce service utilise l'image Docker nginx:latest et mappe le port 80 de l'hôte vers le port 80 du conteneur.

Enregistrez le fichier en appuyant sur Ctrl + O, puis sur Entrée, et quittez l'éditeur avec Ctrl + X.

Nous avons maintenant créé avec succès un fichier docker-compose.yaml simple.

Utiliser dry-run avec une commande Compose basique

Dans cette étape, nous allons utiliser l'option dry-run avec une commande Docker Compose basique pour comprendre son fonctionnement. Le flag dry-run permet de visualiser les actions que Docker Compose exécuterait sans les réaliser concrètement. Cette fonctionnalité est utile pour anticiper l'impact potentiel d'une commande avant son exécution.

Nous utiliserons la commande docker-compose config avec l'option dry-run. La commande config valide et affiche la configuration du fichier Compose. L'ajout de dry-run ne modifie pas significativement son comportement puisque config est déjà une commande non destructive, mais cela constitue un bon point de départ pour comprendre la syntaxe de cette option.

Tout d'abord, assurez-vous de vous trouver dans le répertoire contenant votre fichier docker-compose.yaml.

cd ~/project/my-compose-app

Maintenant, exécutez la commande docker-compose config --dry-run.

docker-compose config --dry-run

Vous devriez voir la configuration parsée de votre fichier docker-compose.yaml s'afficher dans la console. Dans ce cas précis, le résultat est identique à l'exécution de docker-compose config sans l'option dry-run, car config est par nature une opération de type dry-run.

Ce résultat confirme que Docker Compose a correctement interprété votre fichier docker-compose.yaml et comprend les services et configurations qui y sont définis.

Analyser la sortie de la commande dry-run

Dans cette étape, nous allons examiner attentivement la sortie de la commande docker-compose config --dry-run exécutée précédemment. Comprendre cette sortie est essentiel pour voir comment Docker Compose interprète votre fichier docker-compose.yaml.

La sortie obtenue représente la configuration validée au format YAML. Elle montre comment Docker Compose comprend les services, réseaux et volumes définis dans votre fichier.

Examinons les éléments clés de cette sortie basée sur notre simple docker-compose.yaml :

services:
  web:
    build:
      context: /home/labex/project/my-compose-app
    container_name: my-compose-app-web-1
    image: nginx:latest
    ports:
      - published: 80
        target: 80
    restart: "no"

Vous verrez la section services, et à l'intérieur, le service web.

  • image: nginx:latest : Confirme que Docker Compose a correctement identifié l'image à utiliser pour le service web.
  • ports: : Cette section montre le mappage des ports. published: 80 indique le port hôte et target: 80 le port conteneur, correspondant à notre définition dans docker-compose.yaml.
  • container_name: my-compose-app-web-1 : Docker Compose génère automatiquement un nom de conteneur basé sur le nom du projet et du service.
  • build: : Bien que nous ayons spécifié une image, Docker Compose inclut une section build avec le contexte défini sur le répertoire courant. Ceci fait partie de la représentation interne.
  • restart: 'no' : Par défaut, Docker Compose définit la politique de redémarrage à no si non spécifiée.

Cette sortie représente la configuration finale que Docker Compose utiliserait pour une commande comme docker-compose up. Avec des commandes modifiantes (que nous verrons ensuite), le flag dry-run montrerait les actions prévues plutôt que juste la configuration.

Pour la commande config, le flag dry-run sert principalement à valider la syntaxe et structure de votre fichier docker-compose.yaml. Toute erreur de syntaxe serait signalée par la commande config, avec ou sans dry-run.

Utiliser dry-run avec une commande qui modifierait le système

Dans cette étape, nous allons utiliser l'option dry-run avec une commande Docker Compose qui modifierait normalement votre système, comme docker-compose up. Cela démontrera comment dry-run peut afficher les actions prévues sans réellement créer de conteneurs ou réseaux.

La commande docker-compose up, sans dry-run, téléchargerait les images spécifiées (si absentes), créerait des réseaux et démarrerait des conteneurs selon votre fichier docker-compose.yaml. En ajoutant le flag dry-run, nous pouvons voir les étapes prévues sans les exécuter.

Commencez par vous assurer d'être dans le bon répertoire :

cd ~/project/my-compose-app

Exécutez maintenant la commande docker-compose up --dry-run.

docker-compose up --dry-run

Vous verrez une sortie indiquant les actions que Docker Compose aurait effectuées. Pour notre simple docker-compose.yaml, la sortie pourrait ressembler à ceci :

Would create network "my-compose-app_default"
Would create service "web"
  Would pull image "nginx:latest"
  Would create container "my-compose-app-web-1"

Cette sortie montre clairement que Docker Compose prévoit de :

  1. Créer un réseau par défaut nommé my-compose-app_default
  2. Créer un service nommé web
  3. Télécharger l'image nginx:latest (si elle n'est pas déjà disponible localement)
  4. Créer un conteneur nommé my-compose-app-web-1 pour le service web

Aucune de ces actions n'est réellement exécutée. Aucun réseau n'est créé, aucune image n'est téléchargée, et aucun conteneur n'est démarré. Le flag dry-run empêche toute modification réelle de votre environnement Docker.

Cette fonctionnalité est extrêmement utile pour :

  • Prévisualiser les changements : Avant de déployer une application complexe
  • Dépannage : Si une commande docker-compose up échoue
  • Apprentissage : Expérimenter avec différentes configurations sans affecter le système

Vous pouvez également utiliser le flag dry-run avec d'autres commandes Docker Compose comme down, start, stop et rm pour voir quelles ressources seraient affectées.

Résumé

Dans ce lab, nous avons appris à préparer un fichier docker-compose.yaml simple en commençant par installer Docker Compose, puis en créant un répertoire et le fichier YAML avec une définition de service Nginx basique. Nous avons ensuite exploré l'utilisation du flag dry-run avec les commandes Docker Compose.

Nous avons observé comment le flag dry-run nous permet de prévisualiser les actions qu'une commande exécuterait sans réellement modifier le système. Cet outil précieux permet de tester les modifications apportées à notre fichier docker-compose.yaml et de comprendre l'impact potentiel des commandes avant leur exécution.