# Labo 4 - Les volumes

Nous pouvons monter des volumes dans un conteneur pour pouvoir interagir entre le système de fichiers de la machine hôte et celui du conteneur.

Créons un fichier dans la machine hôte

```
sudo echo OK > fic
```

[![09.png](https://kb.numericare.fr/uploads/images/gallery/2021-01/scaled-1680-/ywpMyA0O10oYGlSR-09.png)](https://kb.numericare.fr/uploads/images/gallery/2021-01/ywpMyA0O10oYGlSR-09.png)

Voilà comment monter le volume courant accessible depuis le conteneur :

```
sudo docker run -ti --rm -v $(pwd):/texte bash
```

[![10.png](https://kb.numericare.fr/uploads/images/gallery/2021-01/scaled-1680-/40i19Q2AcXABYNoL-10.png)](https://kb.numericare.fr/uploads/images/gallery/2021-01/40i19Q2AcXABYNoL-10.png)

<p class="callout info">Le paramètre $(pwd) est le chemin courant (là où on se trouve dans la machine hôte)</p>

On retrouve bien le fichier fic

[![11.png](https://kb.numericare.fr/uploads/images/gallery/2021-01/scaled-1680-/FSNXIMKOHBxEC6Do-11.png)](https://kb.numericare.fr/uploads/images/gallery/2021-01/FSNXIMKOHBxEC6Do-11.png)

On peut également, à travers du conteneur, écrire dans ce fichier et vérifier dans la machine hôte si on a pu écrire dedans

```
echo TEST >> /texte/fic
```

<p class="callout info">Le paramètre &gt;&gt; permet d'incrémenter le texte du fichier</p>

[![12.png](https://kb.numericare.fr/uploads/images/gallery/2021-01/scaled-1680-/FfsWPRfH8NNnpM9J-12.png)](https://kb.numericare.fr/uploads/images/gallery/2021-01/FfsWPRfH8NNnpM9J-12.png)

Il est également possible de donner accès à ce fichier en lecture seule de la manière suivante. En rajoutant une ligne nous aurons un message d'erreur disant que le fichier est en lecture seule (ro = read only) :

[![13.png](https://kb.numericare.fr/uploads/images/gallery/2021-01/scaled-1680-/jfqzswy6gIohyhv3-13.png)](https://kb.numericare.fr/uploads/images/gallery/2021-01/jfqzswy6gIohyhv3-13.png)

On peut également créer un script et voir s'il est compatible dans la version de bash que nous avons

Créons le script :

```
vi script.sh
```

> echo OK &amp;&gt;&gt; /tmp/test  
> cat /tmp/test

Le rendre executable

```
sudo chmod +x script.sh
```

Maintenant lançon-le dans docker

```
sudo docker run --rm -v $(pwd)/script.sh:/script.sh bash /script.sh
```

[![14.png](https://kb.numericare.fr/uploads/images/gallery/2021-01/scaled-1680-/F24Dt6Hj4YViocyy-14.png)](https://kb.numericare.fr/uploads/images/gallery/2021-01/F24Dt6Hj4YViocyy-14.png)

<p class="callout warning">Attention de ne pas monter de dossier sensibles de la machine hôte sur le conteneur !</p>