I have the following example
version: '2'
services:
proxy:
container_name: proxy
hostname: proxy
image: nginx
ports:
- 80:80
- 443:443
volumes:
- proxy_conf:/etc/nginx
- proxy_htdocs:/usr/share/nginx/html
volumes:
proxy_conf: {}
proxy_htdocs: {}
which works fine. When I run docker-compose up
it creates those named volumes in /var/lib/docker/volumes
and all is good. However, from the host, I can only access /var/lib/docker
as root, because it's root:root
(makes sense). I was wondering if there is a way of chown
ing the host's directories to something more sensible/safe (like, my relatively unprivileged user that I use to do most things on the host) or if I just have to suck it up and chown
them manually. I'm starting to have a number of scripts already to work around other issues, so having an extra couple of lines won't be much of a problem, but I'd really like to keep my self-written automation minimal, if I can -- fewer chances for stupid mistakes.
By the way, no: if I mount host directories instead of creating volumes, they get overlaid, meaning that if they start empty, they stay empty, and I don't get the default configuration (or whatever) from inside the container.
Extra points: can I just move the volumes to a more convenient location? Say, /home/myuser/myserverstuff/volumes
?
It's best to not try to access files inside /var/lib/docker
directly. Those directories are meant to be managed by the docker daemon, and not to be messed with.
To access the data inside a volume, there's a number of options;
- use a bind-mounted directory (you considered that, but didn't fit your use case).
- use a "service" container that uses the same volume and makes it accessible through that container, for example a container running
ssh
(to usescp
) or a SAMBA container (such as svendowideit/samba) - use a volume-driver plugin. there's various plugins around that offer all kind of options. For example, the local persist plugin is a really simple plug-in that allows you to specify where docker should store the volume data (so outside of
/var/lib/docker
)
来源:https://stackoverflow.com/questions/36312699/chown-docker-volumes-on-host-possibly-through-docker-compose