Using Docker for Windows with Linux containers, it appears that volumes are always mounted as
root inside containers.
Trying to change either the owner (with
chown) or the permissions (with
chmod) doesn’t return any error but nothing changes.
Maybe this is a well know thing but I can’t find exact information on this subject anywhere. How does these permissions work?
On a Mac for example, things are a little different. Volumes get mounted as
root but the owner can be changed using
chmod on a Mac sometimes succeeds, sometimes it returns “Operation not permitted”.
A use case is when trying to use Apache with a mounted volume as document root. It won’t work because all files are owned by
A quick replication example (in PowerShell):
## Prepare: $ cd ~; mkdir test-owner-dockr; cd test-owner-dockr $ echo "Testing ownership and permissions" > README.md $ docker run -d --name testowner -v "$(pwd):/tmp/win" -w /tmp/win busybox sh -c 'while [ true ]; do date; sleep 1; done' ## View original: $ docker exec testowner ls -l total 1 -rwxr-xr-x 1 root root 72 Jan 5 15:51 README.md ## Change permission (nothing happens, command succeeds): $ docker exec testowner sh -c 'chmod 0777 README.md && ls -l' total 1 -rwxr-xr-x 1 root root 72 Jan 5 15:51 README.md ## Change ownership (nothing happens, command succeeds): $ docker exec testowner sh -c 'chown nobody README.md && ls -l' total 1 -rwxr-xr-x 1 root root 72 Jan 5 15:51 README.md