Funciones avanzadas disponibles en la aplicación
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.
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.
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).
| Type | Description | Usage fréquent |
|---|---|---|
| Volumes | Stockage géré et persistant par Docker, indépendant des conteneurs. | Données à préserver durablement, partage entre conteneurs. |
| Bind mounts | Lien direct entre un dossier local et un dossier dans un conteneur. | Développement local, accès direct aux fichiers du host. |
| tmpfs mounts | Stockage 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.
Docker Compose permet de déclarer et monter des volumes pour chaque service, garantissant persistance et partage de données.
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 :
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.
| Critères | Volume Docker | Bind mount |
|---|---|---|
| Localisation | Dans l’espace Docker (géré) | Chemin spécifique sur la machine hôte |
| Performance | Optimisée | Variable selon système de fichiers |
| Facilité de partage | Simple entre conteneurs | Peut varier selon droits et chemins |
| Cas d’usage | Données persistantes, bases | Développement, logs, configuration modifiables |
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:
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.
# Sauvegarder un volume
docker run --rm -v db-data:/data -v [Formule](pwd):/backup busybox tar xzvf /backup/db-data.tar.gz -C /data
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.
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.
