在Docker中将“named volume”挂载为非root用户

有没有办法以非root用户身份挂载一个命名卷? 我试图避免必须在每个Dockerfile中运行一个chown ,但是我需要一个非root用户可以写的挂载,以便能够写入图像中的构build所创build的工件

这就是我想要的

 docker run --rm -it -v /home/bob/dev/:/src/dev -v builds:/mnt/build --name build hilikus/build /bin/bash 

但我得到的第二座山

 [user@42f237282128 ~]$ ll /mnt total 4 drwxr-xr-x 2 root root 4096 Sep 18 19:29 build 

我的另一个mount( /src/dev/ )是由用户拥有的,而不是root 用户所拥有的, 但是,我还没有能够对指定的卷做同样的事情。

指定的卷将初始化为您在该位置的映像的内容,因此您需要在Dockerfile中设置权限:

 $ cat df.vf-uid FROM busybox RUN mkdir -p /data && echo "hello world" > /data/hello && chown -R 1000 /data $ docker build -t test-vf -f df.vf-uid . Sending build context to Docker daemon 23.06 MB Step 1 : FROM busybox ---> 2b8fd9751c4c Step 2 : RUN mkdir -p /data && echo "hello world" > /data/hello && chown -R 1000 /data ---> Using cache ---> 41390b132940 Successfully built 41390b132940 $ docker run -v test-vol:/data --rm -it test-vf ls -alR /data /data: total 12 drwxr-xr-x 2 1000 root 4096 Sep 19 15:26 . drwxr-xr-x 19 root root 4096 Sep 19 15:26 .. -rw-r--r-- 1 1000 root 12 Aug 22 11:43 hello