Volumes

Liste des volumes

sudo docker volume ls

DRIVER VOLUME NAME
local volume1
local volume2

Créer un volume

sudo docker volume create <VOLUME NAME>

<VOLUME NAME>
volume1

Créer un volume (Bind-mount)

sudo docker container run -v <HOST_PATH>:<CONTAINER_PATH>

HOST_PATH : Chemin vers un fichier ou dossier de la machine hôte

CONTAINER_PATH : Chemin vers un fichier ou dossier du container

Le résultat de cette opération rend le dossier hôte disponible au point de montage spécifique dans le container.

# Création d'un répertoire et fichier sur l'hôte
sudo mkdir /tmp/myfolder && touch /tmp/myfolder/file_from_host
# Bind-mount myfolder sur /tmp dans un container basé sur Alpine
sudo docker container run -ti -v /tmp/myfolder:/tmp alpine sh
# Le répertoire myfolder 'cache' le contenu de /tmp
# sur shell Alpine faire :
ls /tmp/
# Résultat : file_from_host
# Création d'un fichier depuis le container
# sur shell Alpine faire :
touch /tmp/file/file_from_container
# Le fichier est visible dans le répertoire de l'hôte
ls /tmp/myfolder
# Résultat : file_from_host file_from_container

Supprimer un volume

sudo docker volume rm <VOLUME NAME>

<VOLUME NAME>
volume1

Inspecter un volume

sudo docker volume inspect [OPTION '{{ data }}'] <VOLUME NAME>

L'utilisation de Go templates est également possible pour inspecter les volumes avec l'option :

--format '{{ Mountpoint }}' ou -f '{{ Mountpoint }}'

/var/lib/docker/volumes/volume2/_data

Définition d'un volume dans le Dockerfile

FROM nginx:1.11.8
VOLUME /usr/share/nginx/html
CMD ['nginx', '-g', 'daemon off;']

Création d'un volume à l'exécution d'un container

La création du volume à l'exécution d'un container se fait grâce à l'option -v [PATH]

sudo docker run -d --name nginx -p 8080:80 -v /usr/share/nginx/html nginx