Objectifs
- Comprendre la durée de vie de la couche d’écriture d’un container.
- Créer et inspecter un volume Docker nommé.
- Distinguer un volume géré par Docker d’un bind mount hôte.
- Monter des données en lecture seule lorsque l’écriture n’est pas nécessaire.
Persister les données des containers
Les fichiers écrits dans la couche du container survivent à un simple arrêt, mais disparaissent avec la suppression du container. Les données durables doivent donc être placées dans un stockage extérieur à cette couche.
Un volume est géré par Docker et possède son propre cycle de vie. Un bind mount relie directement un chemin précis de l’hôte à un chemin du container.
Créer et inspecter un volume nommé
Docker choisit l’emplacement physique du volume sur l’hôte du daemon. Le nom stable permet de le rattacher à un autre container sans dépendre de l’ancienne instance.
docker volume create app-data
docker volume ls
docker volume inspect app-datadocker run -d \
--name nginx-volume \
-p 8080:80 \
-v app-data:/usr/share/nginx/html \
nginxLa commande crée ou réutilise app-data. Aucun exemple de cette leçon ne supprime automatiquement le volume.
Bind mounts
Un bind mount convient lorsqu’un fichier de configuration ou du code doit rester directement accessible depuis l’hôte. Il dépend toutefois du chemin et des permissions de cette machine.
docker run -d \
-p 8080:80 \
-v "$(pwd)/html:/usr/share/nginx/html:ro" \
nginx$(pwd) correspond à un shell de type Bash. Sous PowerShell, utilisez un chemin absolu compatible, par exemple fondé sur ${PWD}, et sous CMD un chemin fondé sur %cd%. Vérifiez toujours le chemin réellement transmis à Docker Desktop.
Volume nommé ou bind mount ?
Le volume nommé est portable au niveau de la configuration Docker et adapté aux données applicatives. Le bind mount donne un contrôle direct sur le chemin hôte, pratique pour le développement ou une configuration locale.
- Volume nommé : emplacement géré par Docker, cycle de vie indépendant du container.
- Bind mount : emplacement choisi sur l’hôte, dépendant de son arborescence.
- Suffixe :ro : le processus du container ne peut pas écrire dans le montage.
Bonnes pratiques
Identifiez quelles données doivent persister, sauvegardez les volumes critiques et limitez les droits d’écriture. Un montage peut masquer les fichiers déjà présents au même chemin dans l’image.
- Nommer explicitement les volumes de données importantes.
- Préférer :ro pour une configuration qui ne doit pas être modifiée.
- Tester les procédures de sauvegarde et de restauration.
Erreur fréquente : conserver une base de données dans la couche du container
Mini résumé
- La couche d’écriture disparaît quand le container est supprimé.
- Un volume nommé est géré par Docker et persiste indépendamment du container.
- Un bind mount relie un chemin hôte précis au container.
- Le mode lecture seule réduit les modifications possibles sur les données montées.
Mini quiz
Trois questions pour vérifier les notions essentielles de la leçon.