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 Créons un conteneur en mappant ce dossier : sudo docker run --rm -ti -v $(pwd)/test:/test bash Voyons le contenu de notre fichier /sbin (répertoire qui contient des commandes de base pour l'administration du système) ls -lh /sbin 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 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 Essayons de créer un nouveau conteneur avec le volume managé créé ci-dessus sudo docker run --rm -ti -v mes_donnees:/test bash 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 Allons voir dedans pour voir si le fichier fic est bien présent sudo ls -lh /var/lib/docker/volumes/mes_donnees/_data Si on monte sur le volume managé le dossier sbin sudo docker run --rm -ti -v mes_donnees:/sbin bash 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 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/ 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