Gérer des volumes

Docker permet de gérer les volumes de données à l'aide de plusieurs commandes docker volumes :

  • create: permet de créer un nouveau volume

  • inspect: Affiche les informations d'un ou plusieurs volumes

  • ls: Liste les volumes de l'hôte Docker

  • rm: Supprime un volume

SyntaxeCréation d'un volume nommé

1
~ docker volume create --name exemple

Tout comme les conteneurs, un volume peut avoir un nom ce qui permet de le manipuler plus facilement.

1
~ docker volume ls
2
DRIVER              VOLUME NAME
3
local               50957995c7304e7d398429585d36213bb87781c53550b72a6a27c755c7a99639
4
local               exemple

SyntaxeInformations sur les conteneurs

1
~ docker volume inspect example
2
   [
3
       {
4
           "Name": "example",
5
           "Driver": "local",
6
           "Mountpoint":
7
           "/var/lib/docker/volumes/exemple/_data",
8
           "Labels": {},
9
           "Scope": "local"
10
} ]
11

SyntaxeUtilisation d'un volume nommé

1
~ docker run -v example:/mountPoint -it debian:stretch

Cette commande permet de monter un volume manuellement dans un nouveau conteneur. En cas de suppression du conteneur, il est toujours possible de connecter le volume sur un nouveau conteneur.

Nous avons décrit précédemment les étapes à suivre pour créer un volume de données dans une image Docker à l'aide de l'instruction VOLUME du fichier Docker Compse.

Cependant, Docker ne fournit aucun mécanisme permettant de partager le répertoire ou le fichier présent sur l'hôte pendant la construction afin de garantir la transférabilité des images Docker. La seule disposition fournie par Docker consiste à monter le répertoire ou le fichier de l'hôte sur le volume de données d'un conteneur lors du lancement de celui-ci.

Afin de permettre la transférabilité des données d'un conteneur à un autre, il est possible d'utiliser l'option -v de la sous-commande docker run.

  • -v <chemin dans le conteneur>

  • -v <chemin hôte docker>:<chemin dans le conteneur>

  • -v <chemin hôte docker>:<chemin dans le conteneur>:<read write mode>

  • -v <nom de volume>:<chemin dans le conteneur>

  • -v <nom de volume>:<chemin dans le conteneur>:<read write mode>

Exemple

1
~ docker run -v example:/mountPoint -it debian:stretch

Cette commande permet de monter un volume manuellement dans un nouveau conteneur. En cas de suppression du conteneur, il est toujours possible de connecter le volume sur un nouveau conteneur.

1
~ docker run -v /home/myuser/docker/mon-application:/mountPoint -it debian:stretch

Cette commande permet de partager des données de l'hôte Docker du chemin /home/myuser/docker/mon-application vers le conteneur dans le dossier /mountPoint