# TP2 - Volumes et Bind-mounts

## Sommaire 


## Questions
### 1. Quelle est la différence entre un bind mount et un volume Docker ?
Aucune idée pour le moment 

### 2. Où sont stockés physiquement les volumes Docker sur votre machine ?
Les volumes Docker sont stockés physiquement (donc dans la machine hôte) dans le répertoire /var/lib/docker/volumes/.
On peut utiliser la commande suivante : 
```bash
docker volume inspect [nom-du-volume]
```
Et on voit le chemin dans la catégorie "Mountpoint"

### 3. Comment lister les volumes existants ?
On peut utiliser la commande :
```bash
docker volume ls
```
Cette commande affichera tous les volumes disponibles avec leur nom et leur driver.

### 4. Comment inspecter le contenu d'un volume ?
La méthode la plus simple consiste à créer un conteneur temporaire qui monte le volume, puis à explorer son contenu :
Une fois dans le conteneur, vous pouvez utiliser des commandes standard comme `ls`, `cat`, `grep`, etc. pour explorer le contenu du volume.

### 5. Que se passe-t-il pour les données d'un volume quand on supprime le conteneur associé ?
Quand on supprime un conteneur Docker, les données stockées dans les volumes associés à ce conteneur sont conservées (c'est l'un des avantages principale des volumes).

### 6. Quand utiliser un bind mount plutôt qu'un volume Docker ?
Les bind mounts sont préférables aux volumes Docker quand on développe une application et on souhaite voir les changements immédiatement sans reconstruire l'image. Ils sont aussi utiles pour injecter des fichiers de configuration depuis l'hôte ou accéder à des données spécifiques du système hôte. Les bind mounts facilitent les sauvegardes rapides et l'intégration avec d'autres outils locaux nécessitant l'accès aux mêmes fichiers. Dans certains scénarios, ils peuvent offrir de meilleures performances pour les opérations d'E/S intensives. Contrairement aux volumes Docker qui sont gérés par Docker et plus adaptés à la production, les bind mounts dépendent de la structure du système de fichiers de l'hôte.

### 7. Peut-on monter plusieurs dossiers dans un même conteneur ?
Oui, c'est totalement possible. D'ailleurs, en entreprise c'est très courant de le faire parce que ça permet de faire des choses du genre :
- Dossier logs
- Dossier config
- Dossier web
...

### 8. Quelle est la différence entre monter un dossier et monter un fichier unique ?
La différence entre monter un dossier et monter un fichier unique dans Docker est simple. Quand on monte un dossier, tout son contenu est accessible et modifiable dans le conteneur. Chaque fichier ajouté, modifié ou supprimé est instantanément synchronisé entre l'hôte et le conteneur. C'est pratique pour des sites web ou des applications avec plusieurs fichiers.

Quand on monte un fichier unique, seul ce fichier précis est partagé avec le conteneur. Le reste du dossier parent n'est pas accessible. C'est utile pour remplacer juste un fichier de configuration spécifique tout en gardant les autres fichiers par défaut du conteneur.

Si on monte un dossier, on peut ajouter de nouveaux fichiers qui seront visibles dans le conteneur. Avec un fichier unique, on ne peut que modifier son contenu, pas en créer d'autres à côté.

### 9. Les modifications sont-elles bidirectionnelles avec un bind mount ?
Oui, les modifications sont bidirectionnelles avec un bind mount. Cela signifie que tout changement fait dans le dossier ou le fichier monté est visible à la fois sur la machine hôte et dans le conteneur.

Si vous modifiez un fichier depuis l'intérieur du conteneur, ce changement sera immédiatement visible dans le système de fichiers de l'hôte. De même, si vous modifiez le fichier directement sur l'hôte, le changement sera instantanément visible dans le conteneur.

Cette bidirectionnalité est l'un des principaux avantages des bind mounts, permettant une synchronisation en temps réel. C'est particulièrement utile pendant le développement, car vous pouvez modifier du code sur votre machine hôte avec votre éditeur habituel et voir les changements prendre effet immédiatement dans l'application exécutée dans le conteneur.

### 10. Comment vérifier les bind mounts actifs sur un conteneur ?
Pour vérifier les bind mounts actifs sur un conteneur Docker, vous pouvez utiliser :
```bash
docker inspect --format='{{.Mounts}}' nom_conteneur
```