Docker Compose et Stockage

Virtualisation et Conteneurisation : Concepts et PratiquesNiveau : intermediate21 octobre 2025
Practice with this sheet
Create your flashcards, quizzes, and mock exams

Advanced features available in the app

  • Images
  • Mathematical formulas
  • Professional and academic diagrams in the app
Start for free

Fiche de Révision : Docker Compose et Stockage


Introduction

Docker Compose est un outil puissant facilitant la définition et le déploiement d’applications multi-conteneurs Docker. Une composante clé de la gestion des conteneurs est la gestion du stockage, qui permet de préserver les données au-delà du cycle de vie d’un conteneur. Cette fiche vise à expliquer en détail l’interaction entre Docker Compose et le stockage, avec des exemples et concepts intermédiaires essentiels.


1. Qu'est-ce que Docker Compose ?

Docker Compose est un outil permettant de définir, configurer et exécuter plusieurs conteneurs Docker à l’aide d’un fichier YAML nommé docker-compose.yml. Il simplifie la gestion de services interdépendants.

Concepts clés :

  • Service : un conteneur ou un ensemble de conteneurs exécutant une application ou un composant.
  • Réseau : isolé ou partagé pour la communication des conteneurs.
  • Volumes : mécanisme de stockage persistant (voir section stockage).
  • Fichier docker-compose.yml : décrit les services, volumes, réseaux, et configurations.

2. Le stockage dans Docker : notions fondamentales

Le stockage permet de persister les données générées ou utilisées par un conteneur, car les conteneurs sont par défaut éphémères (données perdues à la suppression).

Types de stockage Docker :

TypeDescriptionUsage fréquent
VolumesStockage géré et persistant par Docker, indépendant des conteneurs.Données à préserver durablement, partage entre conteneurs.
Bind mountsLien direct entre un dossier local et un dossier dans un conteneur.Développement local, accès direct aux fichiers du host.
tmpfs mountsStockage en mémoire vive (RAM), volatile.Données temporaires, cache sans persistance.

Volume Docker : un espace de stockage qui persiste indépendamment de la durée de vie des conteneurs, géré directement par Docker.


3. Définir le stockage dans Docker Compose

Docker Compose permet de déclarer et monter des volumes pour chaque service, garantissant persistance et partage de données.

Syntaxe basique pour volumes dans docker-compose.yml

version: "3.8"
services:
  db:
    image: mysql:5.7
    volumes:
      - db-data:/var/lib/mysql   # Monte le volume db-data dans le conteneur

volumes:
  db-data:                      # Déclare le volume nommé

Explications :

  • volumes: sous un service : indique les montages de volumes dans ce conteneur.
  • volumes: en racine : déclaration des volumes Docker nommés, gérés par Docker.

Bind mounts dans Docker Compose

services:
  web:
    image: nginx
    volumes:
      - ./html:/usr/share/nginx/html

Ici, le dossier local ./html est monté dans le conteneur à l’emplacement /usr/share/nginx/html.


4. Volumes Docker vs Bind mounts : comparatif

CritèresVolume DockerBind mount
LocalisationDans l’espace Docker (géré)Chemin spécifique sur la machine hôte
PerformanceOptimiséeVariable selon système de fichiers
Facilité de partageSimple entre conteneursPeut varier selon droits et chemins
Cas d’usageDonnées persistantes, basesDéveloppement, logs, configuration modifiables

5. Bonnes pratiques de stockage dans Docker Compose

  • Utiliser des volumes Docker pour la persistance : éviter de stocker directement dans le conteneur.
  • Déclarer les volumes nommés dans la section volumes: racine : facilite la gestion et le partage.
  • Privilégier les bind mounts pour les données en local lors du développement.
  • Éviter d’utiliser tmpfs pour les données critiques car tout est stocké en RAM.
  • Sécuriser les permissions sur les volumes montés pour éviter les problèmes d’accès.

6. Exemple avancé de Docker Compose avec stockage

version: "3.8"

services:
  web:
    image: wordpress:latest
    ports:
      - "8080:80"
    volumes:
      - wp-data:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - db-data:/var/lib/mysql

volumes:
  wp-data:
  db-data:

Explication :

  • wp-data contient les fichiers Wordpress.
  • db-data contient les données MySQL.
  • En cas d'arrêt ou suppression des conteneurs, les données restent accessibles grâce aux volumes.

7. Liens concepts : stockage, réseaux et cycles de vie

Le stockage est souvent couplé avec le réseau dans Docker Compose, car plusieurs services interagissent tout en conservant leurs données persistantes.

[Diagramme]

Explication : Le volume est partagé entre les services web et db, tandis que les conteneurs communiquent via un réseau Docker Compose.


8. Concepts complémentaires : gestion et sauvegarde des volumes

  • Docker volume inspect : pour vérifier la configuration d’un volume.
  • Sauvegarde d'un volume : on peut utiliser des commandes Docker pour exporter/importer les volumes, par exemple avec tar.
# Sauvegarder un volume
docker run --rm -v db-data:/data -v [Formule](pwd):/backup busybox tar xzvf /backup/db-data.tar.gz -C /data

9. Docker Compose et la mémoire (tmpfs)

La directive tmpfs permet de monter un stockage en mémoire vive, utile pour des données temporaires.

services:
  app:
    image: redis
    tmpfs:
      - /data

Attention : les données sont volatiles, elles sont perdues à l’arrêt du conteneur.


Synthèse

  • Docker Compose facilite la gestion d’applications multi-conteneurs avec un fichier déclaratif.
  • La persistance des données est assurée par les volumes Docker ou bind mounts.
  • La section volumes de Docker Compose permet de déclarer et configurer ces espaces de stockage.
  • Il existe plusieurs mécanismes (volumes, bind mounts, tmpfs), adaptés à différents besoins (production vs développement, permanente vs temporaire).
  • Une bonne gestion du stockage dans Docker Compose est essentielle pour éviter la perte de données et faciliter la maintenance.
  • La configuration des volumes s’accompagne souvent de la gestion des réseaux pour garantir la communication sécurisée entre services.

Pour approfondir


Cette fiche vous prépare à maîtriser la gestion des volumes et du stockage dans vos projets Docker Compose et garantit une compréhension solide entre services, stockage et architectures conteneurisées.


Agent CTA Background

Transform your learning experience

Get started nowJoin thousands of students who have already transformed their learning