DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesCréer ses images Docker : Dockerfile, volumes et réseaux03 - Persister les données avec les volumes

Détails

  • 30 minutes
  • Intermédiaire

Objectifs

  • Créer et gérer des volumes Docker nommés
  • Monter un volume dans un conteneur pour persister les données
  • Utiliser un bind mount pour partager un dossier hôte
  • Vérifier que les données survivent à la suppression d'un conteneur
Module Créer ses images Docker : Dockerfile, volumes et réseaux

Exercice 03 : Persister les données avec les volumes

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Créer un volume nommé avec docker volume create
  • ✅ Lister et inspecter des volumes avec docker volume ls et docker volume inspect
  • ✅ Monter un volume dans un conteneur avec -v nom:/chemin
  • ✅ Utiliser un bind mount avec -v $(pwd):/app
  • ✅ Vérifier que les données persistent après suppression du conteneur

Durée estimée : 30 min | Difficulté : ⭐⭐⭐☆☆


📖 Contexte

Par défaut, les données écrites dans un conteneur disparaissent avec lui. Les volumes nommés sont gérés par Docker et survivent aux suppressions de conteneurs. Les bind mounts pointent directement vers un dossier de l'hôte - idéaux pour le développement. Comprendre la différence est essentiel pour ne pas perdre de données en production.


📋 Énoncé

Démontrez la persistance des données en créant un volume nommé, en écrivant des données depuis un conteneur, en supprimant ce conteneur, puis en vérifiant que les données sont toujours accessibles depuis un nouveau conteneur.


🧭 Déroulement

Tâche 1 : Créer et inspecter un volume nommé

Créez un volume Docker nommé mes-donnees, puis affichez ses détails (chemin sur l'hôte, driver, date de création).

Indice : docker volume create <nom> crée le volume. docker volume inspect <nom> affiche ses métadonnées en JSON, notamment le champ Mountpoint.

Vérification : docker volume ls liste mes-donnees avec le driver local.


Tâche 2 : Écrire des données depuis un conteneur

Lancez un conteneur Alpine en montant mes-donnees sur /data, puis créez un fichier dans ce volume :

bash
docker run --rm -v mes-donnees:/data alpine \
  sh -c "echo 'persistance Docker' > /data/test.txt && cat /data/test.txt"

Indice : --rm supprime le conteneur automatiquement après exécution. Les données restent dans le volume.

Vérification : La commande affiche persistance Docker et le conteneur est supprimé (docker ps -a ne le liste plus).


Tâche 3 : Vérifier la persistance après suppression

Lancez un nouveau conteneur Alpine (sans --rm cette fois) monté sur le même volume et lisez le fichier précédemment créé.

Indice : Le volume mes-donnees existe indépendamment du conteneur. N'importe quel conteneur qui le monte voit les mêmes données.

Vérification : cat /data/test.txt dans le nouveau conteneur affiche persistance Docker.


Tâche 4 : Utiliser un bind mount

Créez un dossier mon-projet/ sur votre hôte, ajoutez-y un fichier config.json, puis lancez un conteneur Alpine en montant ce dossier sur /app. Modifiez config.json depuis l'intérieur du conteneur et vérifiez que la modification est visible sur l'hôte.

Indice : -v $(pwd)/mon-projet:/app monte le dossier courant dans le conteneur. Les modifications sont immédiatement reflétées des deux côtés.

Vérification : Le fichier modifié dans le conteneur est visible avec cat mon-projet/config.json sur l'hôte.


Tâche 5 : Nettoyer les volumes

Listez tous les volumes, supprimez mes-donnees, puis vérifiez qu'il n'existe plus.

Indice : docker volume rm <nom> supprime un volume. Docker refuse la suppression si un conteneur (même arrêté) l'utilise encore.

Vérification : docker volume ls ne liste plus mes-donnees.


🗂️ Mini-Projet

Démontrez la persistance complète et validez chaque checkpoint :

bash
docker volume create mes-donnees
docker volume inspect mes-donnees

docker run --rm -v mes-donnees:/data alpine \
  sh -c "echo 'persistance Docker' > /data/test.txt"

docker run -it --name lecture -v mes-donnees:/data alpine \
  cat /data/test.txt
docker rm lecture

mkdir mon-projet && echo '{"env":"dev"}' > mon-projet/config.json
docker run --rm -v $(pwd)/mon-projet:/app alpine \
  sh -c "echo '{\"env\":\"prod\"}' > /app/config.json"
cat mon-projet/config.json

docker volume rm mes-donnees
docker volume ls

Checkpoints de validation :

  • docker volume create mes-donnees crée le volume sans erreur
  • docker volume inspect affiche le Mountpoint sur l'hôte
  • Les données écrites dans le volume survivent à la suppression du conteneur
  • Un second conteneur lit les données du volume
  • Le bind mount reflète les modifications hôte <-> conteneur en temps réel
  • docker volume rm supprime le volume proprement

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement
  • Tâche 1 : Créer et inspecter un volume nommé
  • Tâche 2 : Écrire des données depuis un conteneur
  • Tâche 3 : Vérifier la persistance après suppression
  • Tâche 4 : Utiliser un bind mount
  • Tâche 5 : Nettoyer les volumes
  • 🗂️ Mini-Projet