Skip to main content

Labo 9 - Les volumes, partie 2

Nous allons continuer à voir le mappage des volumes de l'hôte vers le conteneur

Créons un dossier avec un fichier auquel je lui donne tous les droits et du texte dedans

sudo mkdir test && sudo chmod -R 777 test && sudo echo OK > test/fic && sudo cat test/fic

48.png

Créons un conteneur en mappant ce dossier :

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

49.png

Voyons le contenu de notre fichier /sbin (répertoire qui contient des commandes de base pour l'administration du système)

ls -lh /sbin

50.png

Sortons du conteneur et créons-en un nouveau en changeant le mappage du volume de cette manière :

sudo docker run --rm -ti -v $(pwd)/test:/sbin bash

51.png

Le mappage a totalement éclipsé le contenu de sbin, c'est la particularité du mappage.

Les volumes managés

Nous allons voir un autre type de volumes : les volumes managés. C'est docker qui a la main dessus alors que les volumes mappés sont sur l'hôte lui même.

Pour ce faire, créons un volume

sudo docker volume create mes_donnees && sudo docker volume ls

52.png

Essayons de créer un nouveau conteneur avec le volume managé créé ci-dessus

sudo docker run --rm -ti -v mes_donnees:/test bash

53.png

On voit bien qu'en créant un fichier dans le conteneur, en sortant du conteneur (= conteneur détruit) et en recréant un nouveau conteneur, le fichier est toujours présent grâce au volume managé

En lançant la commande précédente, il est possible de créer directement le volume managé sans passer par la commande
sudo docker volume create mes_donnees

Voici comment retrouver les volumes managés par docker

sudo docker volume inspect mes_donnees

54.png

Allons voir dedans pour voir si le fichier fic est bien présent

sudo ls -lh /var/lib/docker/volumes/mes_donnees/_data

55.png

Si on monte sur le volume managé le dossier sbin

sudo docker run --rm -ti -v mes_donnees:/sbin bash

56.png

On voit bien le fichier fic présent dans le volume managé sur l'hôte.
Supprimons, depuis l'hôte ce fichier dans le volume managé et relançons le création d'un nouveau conteneur

57.png

Le volume managé étant vide, on peut voir maintenant le contenu du dossier /sbin dans le conteneur.
On sort du conteneur, et affichons le contenu du volume partagé

sudo ls -lh /var/lib/docker/volumes/mes_donnees/_data/

58.png

On retrouve l'intégralité du dossier /sbin du conteneur bien que ce dernier ait été supprimé
Je peux donc créer, modifier, supprimer des dossiers ou fichiers depuis l'hôte ou depuis le conteneur.

Quand on monte un volume managé VIDE, le contenu du dossier de montage du conteneur est intégralement transféré dans le volume managé. Tout cela est persistent à la suppression du conteneur