Is there any way to mount a named volume as a non-root user? I am trying to avoid having to run a chown
in each Dockerfile but I need the mount to be writable by a non-root user to be able to write the artifacts created by a build in the image
This is what I'm trying
docker run --rm -it -v /home/bob/dev/:/src/dev -v builds:/mnt/build --name build hilikus/build /bin/bash
but for the second mount I get
[user@42f237282128 ~]$ ll /mnt
total 4
drwxr-xr-x 2 root root 4096 Sep 18 19:29 build
My other mount (/src/dev/
) is owned by user, not by root so it gives what I need; however, I haven't been able to do the same with the named volume.
The named volume initializes to the contents of your image at that location, so you need to set the permissions inside your Dockerfile:
If you use the new
--mount
syntax instead of the old-v/--volume
syntax it is supposedly possible to assign auid
to the volume's contents viadocker volume create somename --opt -o=uid=1000
or something similar.See https://docs.docker.com/engine/reference/commandline/volume_create/#driver-specific-options
I haven't fully tested this to run as non-root or using the
dockremap
dynamic user with the userns-map option but hope to soon.