Volume managé
Avant d'utiliser cette fonctionnalité, il faut créer un volume qui sera ensuite lié à un dossier du conteneur.
Créer un volume
La commande suivante permet de créer un volume managé.
docker volume create mon_volume
Le nom du volume est mon_volume
.
Bien entendu, si vous en avez besoin, vous pouvez créer plusieurs volumes.
Mais dans ce cas, comment faire la liste des volumes pour s'y retrouver ?
Liste des volumes managés
Pour connaître la liste des volumes managés dans Docker vous pouvez utiliser la commande qui suit.
docker volume ls
On nous affiche un tableau en retour.
DRIVER VOLUME NAME
local mon_volume
Nous voyons le nom du volume précédemment créé, mon_volume
. Si nous en avions eu d'autres, ils seraient également présents dans la liste.
Comment supprimer un volume managé ?
Supprimer un volume managé
Pour supprimer un volume managé (dans notre cas mon_volume
), il faut taper la commande :
docker volume rm mon_volume
Vérifions que la suppression ait bien fonctionné.
docker volume ls
DRIVER VOLUME NAME
Parfait 😃, tout à bien fonctionné 👍.
Lier un volume à un dossier du conteneur
Après avoir supprimé un volume, on va en créer un autre pour continuer à pratiquer. Cette fois-ci, nous allons l'appeler super_volume
et on va vérifier s'il apparaît bien dans la liste des volumes managés.
docker volume create super_volume
docker volume ls
DRIVER VOLUME NAME
local super_volume
Très bien 😄 ! Le super_volume
a été créé.
Maintenant nous allons le connecter au dossier du conteneur.
Voici la commande qui permet d'atteindre cet objectif.
docker run --rm -it -v super_volume:/bin ubuntu:18.04
Nous allons expliquer cette commande.
Comme vous le savez, nous avons créé un conteneur ubuntu:18.04
qui se détruira automatiquement lorsque nous le quitterons.
Et nous avons relié le volume managé au dossier /bin
du conteneur.
Le dossier /bin
est rempli de fichiers alors que le volume super_volume
ne contient rien.
Qu'est-ce qui va donc se passer 🤔?
Dans un volume managé, si celui-ci est vide, c'est le dossier du conteneur qui prend le dessus. Par conséquent, super_volume
contiendra les fichiers de /bin
.
À présent nous allons quitter le conteneur qui va être détruit pour en créer un autre. Dans celui-ci, nous allons relier le volume super_volume
à un autre dossier /test
qui n'existe pas et qui sera de ce fait crée automatiquement.
docker run --rm -it -v super_volume:/test ubuntu:18.04
Dans ce conteneur, si nous listons le contenu du dossier /test
, des fichiers apparaissent.
👆 En effet, puisque super_volume
(qui ne contenait rien) a été relié à /bin
, il a récupéré tout le contenu. Mais lorsque nous supprimons le conteneur, les fichiers de super_volume
ne sont pas supprimés (il n'est alors plus vide).
Si on le relie à un autre dossier, dans notre cas /test
, celui-ci contiendra les fichiers présents dans super_volume
.
⚠️ Attention, si votre dossier dans le conteneur est rempli de plusieurs fichiers, ils seront écrasés par le contenu du volume managé (si celui-ci n'est pas vide).
Informations volume managé
Pour connaître les informations du volume (date de création, ...), vous pouvez taper la commande suivante.
docker volume inspect super_volume
Voici le résultat de la commande.
[
{
"CreatedAt": "2021-08-18T09:34:16Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/super_volume/_data",
"Name": "super_volume",
"Options": {},
"Scope": "local"
}
]
Qui prend le dessus ?
Pour un débutant, il n'est pas évident de s'y retrouver. Pour aider à une bonne compréhension des choses, nous allons utiliser un schéma.
En effet, comme l'a dit Napoléon en son temps, un bon croquis vaut mieux qu'un long discours
.