Finalidade da chave volumes
Está lá para criar volumes nomeados .
Se você não usá-lo, você se encontrará com um monte de valores com hash para seus volumes. Exemplo:
$ docker volume ls
DRIVER VOLUME NAME
local f004b95d8a3ae11e9b871074e9415e24d536742abfe86b32ffc867f7b7063e55
local 9a148e167e1c722cbdb67c8edc36f02f39caeb2d276e9316e64de36e7bc2c35d
Com volumes nomeados, você obtém algo como o seguinte:
$ docker volume ls
local projectname_someconf
local projectname_otherconf
Como criar volumes nomeados
A sintaxe docker-compose.yml
é:
version: '2'
services:
app:
container_name: app
volumes_from:
- appconf
appconf:
container_name: appconf
volumes:
- ./Docker/AppConf:/var/www/conf
volumes:
appconf:
networks:
front:
driver: bridge
Esse algo como acima mostrava os volumes nomeados.
Como remover volumes em massa
Quando você tem um monte de hashes, pode ser muito difícil de limpar. Aqui está um verso:
docker volume rm $(docker volume ls |awk '{print $2}')
Editar: Como apontou @ArthurTacca nos comentários, há uma maneira mais fácil de lembrar:
docker volume rm $(docker volume ls -q)
Como obter detalhes sobre um volume nomeado
Agora que você não precisa mais procurar hashes, é possível ativá-lo e chamá-lo pelo nome dele :
docker volume inspect <volume_name>
# Example:
$ docker volume inspect projectname_appconf
[
{
"Name": "projectname_appconf",
"Driver": "local",
"Mountpoint": "/mnt/sda1/var/lib/docker/volumes/projectname_appconf/_data"
}
]
Sidenote: Você pode querer docker-compose down
de seus serviços para ter um novo começo antes de criar volumes.
Caso você esteja usando o Boot2Docker / Docker Machine , você precisará docker-machine ssh
e sudo -i
antes de executar ls -la /mnt/…
desse volume - você hospeda machine é a VM provisionada pela Docker Machine .