J'étais en train de mettre en place du matériel pour un stage, quand je suis tombé sur cet exemple de fichier de composition:
https://github.com/dockersamples/example-voting-app/blob/master/docker-compose.yml
et je n'ai pas pu savoir comment ce volume est monté, aux lignes 48 et 49 du fichier:
volumes:
db-data:
Quelqu'un peut-il m'expliquer où se trouve ce volume sur l'hôte? Impossible de le trouver et je ne voudrais pas garder les données postgresql pendantes après la disparition des conteneurs. La même chose arrive aux réseaux:
networks:
front-tier:
back-tier:
Pourquoi Docker Composer accepte des définitions de réseau vides comme celle-ci?
Des volumes comme celui-ci sont internes à Docker et stockés dans le magasin Docker (qui se trouve généralement sous /var/lib/docker
). Vous pouvez obtenir une liste de volumes:
$ docker volume ls
DRIVER VOLUME NAME
local 1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
local 2f13b0cec834a0250845b9dcb2bce548f7c7f35ed9cdaa7d5990bf896e952d02
local a3d54ec4582c3c7ad5a6172e1d4eed38cfb3e7d97df6d524a3edd544dc455917
local e6c389d80768356cdefd6c04f6b384057e9fe2835d6e1d3792691b887d767724
Vous pouvez savoir exactement où le volume est stocké sur votre système si vous souhaitez:
$ docker inspect 1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465/_data",
"Name": "1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465",
"Options": {},
"Scope": "local"
}
]
Pour vous assurer que les choses ne sont pas suspendues, vous pouvez utiliser les commandes Prune, dans ce cas docker volume Prune
. Cela vous donnera cette sortie et vous choisirez de poursuivre ou non l'élagage.
$ docker volume Prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N]
Il y a une tendance à accepter ces définitions "vides" pour des choses comme les volumes et les réseaux lorsque vous n'avez rien d'autre à faire qu'à définir qu'un volume ou un réseau doit exister. Autrement dit, si vous souhaitez le créer, mais que vous êtes d'accord avec les paramètres par défaut, il n'y a aucune raison particulière de spécifier les paramètres.