Purpose of the volumes
key
It is there to create named volumes.
If you do not use it, then you will find yourself with a bunch of hashed values for your volumes. Example:
$ docker volume ls
DRIVER VOLUME NAME
local f004b95d8a3ae11e9b871074e9415e24d536742abfe86b32ffc867f7b7063e55
local 9a148e167e1c722cbdb67c8edc36f02f39caeb2d276e9316e64de36e7bc2c35d
With named volumes, you get something like the following:
$ docker volume ls
local projectname_someconf
local projectname_otherconf
How to create named volumes
The docker-compose.yml
syntax is:
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
This something like above shown named volumes.
How to remove volumes in bulk
When you have a bunch of hashes, it can be quite hard to clean up. Here's a one-liner:
docker volume rm $(docker volume ls |awk '{print $2}')
Edit: As @ArthurTacca pointed out in the comments, there's an easier to remember way:
docker volume rm $(docker volume ls -q)
How to get details about a named volume
Now that you do not have to look up hashes anymore, you can go on it and call them by their … name:
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: You might want to docker-compose down
your services to get a fresh start before going to create volumes.
In case you are using Boot2Docker/ Docker Machine, you will have to docker-machine ssh
and sudo -i
before doing a ls -la /mnt/…
of that volume – you host machine is the VM provisioned by Docker Machine.
EDIT: Another related answer about named volumes on SO.
With the latest docker-compose it wont work on links, you need to use docker networks.
And actually you can omit the fluentd-address
because fluentd log driver autodiscover for anyting that listening on 24224 in that case
version: "2"
services:
fluentd:
image: fluent/fluentd:v0.14.8
container_name: fluentd
networks:
- nw-01
nginx:
image: nginx:1.11.5
container_name: nginx
networks:
- nw-01
logging:
driver: fluentd
networks:
nw-01:
external: true
Best Answer
Problem solve: I need to remove the container and create it again. the new tag will get affected