Docker - 5.3 Les bind mounts : relier un dossier de votre machine
Un bind mount relie un emplacement de votre machine à un emplacement du conteneur. Les deux pointent alors vers les mêmes fichiers sur le disque. Cette leçon explique ce mécanisme, sa syntaxe et l'intérêt de pouvoir modifier un fichier sans reconstruire l'image.
Comprendre le principe
Un bind mount est un mappage entre un fichier ou un dossier de la machine hôte et un chemin du conteneur. Les deux chemins désignent exactement les mêmes données sur le disque.
Contrairement à un volume, un bind mount n'est pas géré par Docker. Il utilise directement les fichiers présents sur votre machine. Tant que ces fichiers existent, ils restent disponibles, même après la suppression du conteneur.
Un bind mount se déclare au moment de l'exécution, avec la commande docker run, et non dans le Dockerfile. Il n'a pas besoin de volume pour fonctionner.
Écrire la syntaxe
La syntaxe reprend l'option -v. À gauche des deux-points, on indique le chemin complet sur la machine hôte. À droite, on indique le chemin dans le conteneur.
Sous Windows, le chemin commence par deux barres obliques, suivies de la lettre du disque, puis du reste du chemin.
Pour éviter de taper le chemin complet, la commande $(pwd) affiche le répertoire courant. Elle peut être utilisée directement dans la commande.
docker run -p 80:80 -v $(pwd):<repertoire-dans-le-conteneur> <image>
- Utiliser le chemin complet à gauche des deux-points.
- Indiquer le chemin du conteneur à droite des deux-points.
- Ajouter une option de lecture seule si le conteneur ne doit pas modifier les fichiers.
Un exemple concret
La vidéo utilise un Dockerfile très simple, qui copie un fichier d'index dans un répertoire. Au lieu de copier ce fichier dans l'image, on monte le dossier courant dans le conteneur.
Le résultat est immédiat : une modification faite sur votre machine apparaît directement dans le conteneur, sans reconstruire l'image. Ce type de montage est particulièrement utile pendant le développement.
En résumé
Un bind mount relie directement un chemin de la machine à un chemin du conteneur. Il se déclare à l'exécution, avec l'option -v, et ne nécessite pas de volume. Les modifications faites sur la machine sont visibles immédiatement dans le conteneur.
Points clés
- Un bind mount relie un chemin de la machine à un chemin du conteneur.
- Il utilise les fichiers de la machine, sans passer par la gestion de Docker.
- Il se déclare avec docker run, pas dans le Dockerfile.
- Sous Windows, le chemin commence par deux barres obliques et la lettre du disque.
- La commande $(pwd) évite de taper le chemin complet du dossier courant.
Questions fréquentes
Quelle différence entre un bind mount et un volume ?
Un volume est géré par Docker. Un bind mount pointe vers un chemin choisi sur votre machine.
Supprimer le conteneur efface-t-il mes fichiers ?
Non. Les fichiers de la machine restent en place, car le bind mount ne les crée pas et ne les supprime pas avec le conteneur.
Pourquoi utiliser la lecture seule ?
Elle empêche le conteneur de modifier les fichiers montés. C'est une option utile lorsque le conteneur ne doit que lire les données.