Les volumes

Utilisation des volumes

Les volumes sont des répertoires accessibles depuis le conteneur et l'hôte.
Les volumes sont persistants, contrairement aux fichiers des conteneurs docker.

Les volumes sont très utiles avec Docker, ils peuvent servir à stocker, par exemple :

Une application dockerisée correctement configurée doit stocker ses données dans des volumes.

L'avantage des volumes est la sauvegarde : seules les données utiles s'y trouvent et il est possible de dupliquer une application à partir d'une image docker et des volumes associés.

Un volume est accessible depuis le container à partir de son point de montage. Exemple :

image.png

Le dossier /home/debian/test de l'hôte est monté dans /toto au sein du conteneur avec le paramètre -v. L'hôte et le conteneur ont accès au répertoire.

-v /home/debian/test:/toto

Généralement, les images Docker d'applications indiquent les répertoires dans lesquels elles stockent leurs données utiles, par exemple :

Volumes mappés vs. Volumes managés

Il existe deux types de volumes Docker : mappés et managés. Ils diffèrent par leur mode de gestion et leur usage :

L'exemple ci-dessus est un volume mappé.

Gestion des volumes managés

Les volumes managés docker sont gérés avec la commande docker volume.

docker volume create mon_volume # créer un volume
docker volume ls # lister les volumes
docker volume rm mon_volume # supprimer un volume

Lors de l'exécution d'un conteneur, il faut aussi utiliser -v pour monter un volume managé. À l'inverse d'un volume mappé, il faut indiquer le nom du volume plutôt que son chemin.

docker run -v mon_volume:/home/thibaud/volume ubuntu
# Le contenu du volume mon_volume sera monté dans /home/thibaud/volume au sein du conteneur

Le volume est indépendant du conteneur auquel il est attaché :

image.png

Une subtilité des volumes managés est la priorité des données si l'un des deux répertoires est vide lors du lancement d'un conteneur :

Volume Point de montage (conteneur) Action
Si vide Si non vide Les données initialement dans le conteneur sont copiées dans le volume.
Si non vide Si vide Le contenu du volume est monté dans le conteneur, comme dans l'exemple ci-dessus.
Si non vide Si non vide Le contenu du répertoire dans le conteneur est écrasé par celui du volume.


Revision #35
Created 14 August 2025 20:33:26 by Thibaud FRICHET
Updated 5 September 2025 08:55:37 by Thibaud FRICHET