🛢️Parcours Fioul GroupéDocker · Chapitre 04
Accueil › Docker › Chapitre 04
Chapitre 04 / 08

Volumes & persistance

Par défaut, tout ce qu'écrit un conteneur disparaît quand on le supprime. Pour conserver les données — comme celles de MongoDB — on utilise des volumes.

1 Notion

Les conteneurs sont éphémères

Le système de fichiers d'un conteneur est jetable : si on supprime le conteneur MongoDB, la base est perdue. Il faut donc stocker les données en dehors du conteneur.

Piège classique — lancer une base sans volume, puis docker rm : toutes les campagnes disparaissent. Les données doivent survivre au conteneur.
2 Notion

Les volumes nommés

Un volume nommé est un espace de stockage géré par Docker, indépendant du cycle de vie du conteneur. On le monte à l'endroit où le service écrit ses données.

docker volume create fioul-data
docker run -d --name fioul-mongo \
  -v fioul-data:/data/db -p 27017:27017 mongo:7

Ici /data/db est le dossier où MongoDB stocke ses données ; il est désormais persisté dans le volume fioul-data.

3 Notion

Les bind mounts

Un bind mount monte un dossier de ta machine dans le conteneur — utile en développement (voir tout de suite un fichier modifié) ou pour injecter un jeu de données initial.

docker run -v ./init:/docker-entrypoint-initdb.d mongo:7
Volume nommé vs bind mount — volume nommé pour les données (géré par Docker, portable) ; bind mount pour partager un dossier précis de l'hôte.
4 Pratique

Persister la base du projet

On vérifie la persistance : insérer une campagne, supprimer le conteneur, le relancer sur le même volume → les données sont toujours là.

🛢️ Sur le projet Fioul Groupé

Monte fioul-data:/data/db pour la base du projet. Teste : crée une campagne, docker rm -f fioul-mongo, relance avec le même -v fioul-data:/data/db → la campagne est intacte. On réutilisera ce volume dans le docker-compose (chapitre 7).

À retenir
  • Le FS d'un conteneur est jetable : sans volume, les données sont perdues.
  • Volume nommé (-v nom:/chemin) pour persister les données.
  • Bind mount (-v ./hôte:/conteneur) pour partager un dossier de l'hôte.
← Chapitre 03