Ok, utilisons un volume
Maintenant que vous avez compris le principe, sachez que docker peut vous permettre de créer un volume sans passer par un conteneur. C’est là que je veux en venir !
Prenons un exemple que j’utilise beaucoup, un conteneur mongo dont je ne veux pas perdre les données. J’utilisais, avant, un répertoire perso pour y stocker les données.
Plus tard, j’ai utilisé un conteneur data-only, ce qui fonctionne bien, je ne dis pas le contraire. L’image mongo déclare un volume “/data/db”, donc je n’avais qu’à faire:
docker run --name mongodata -v /data/db -it -d busybox
docker run --rm -it --volumes-from mongodata mongo
Oui, mais c’est bête !
Voilà la meilleure façon de faire:
docker volume create --name mongodata
docker run --rm -it -v mongodata:/data/db mongo
Cette fois, je définis où je monte le volume, et je n’ai qu’un seul conteneur qui tourne: le conteneur mongo. Le volume est local (par défaut) et se trouve ici:
$ docker volume inspect mongodata
[
{
"Name": "mongodata",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/mongodata/_data"
}
]
C’est bien plus efficace et ça limite largement le nombre de conteneurs à démarrer. On notera aussi la facilité à retrouver les volumes par leurs noms.
pour aller plus loin: https://docs.docker.com/engine/tutorials/dockervolumes/