Docker在安装的卷中以root身份创build文件

我正在使用Docker(1.3.1)在容器中构buildRPM:

docker run -v /home/matt/build:/build build-rpm /build/build-pkg.sh 

这工作正常(我的用户在docker组,所以我不需要sudo),并在当前目录中删除一个完整的.rpm文件。 问题是该文件被创build为拥有的根。

我如何安排它,以便该文件被创build拥有同一个用户,我运行docker?

您可以尝试创build(在自定义图像的Dockerfile中)用户,并将其设置为容器使用的那个

 RUN adduser --system --group --shell /bin/sh auser \ && mkdir /home/auser/bin USER auser 

然后检查docker run -v /home/matt/build:/build build-rpm将共享文件夹装入/ build为auser


问题2259中提到的另一个选项:

如果您在绑定安装之前调整音量(在主机端),它将工作。
在这种情况下,你可以这样做:

 mkdir /tmp/www chown 101:101 /tmp/www docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www 

(假设101:101是您的容器中的www-data用户的UID:GID 。)

Docker以root身份运行,不知道你的用户在虚拟环境中(即使你在sudoers组里)。 但是你可以创build一个非root用户,同时build立你可以调用的Docker镜像。

 # create a non-root user named tester, # give them the password "tester" put them in the sudo group RUN useradd -d /home/tester -m -s /bin/bash tester && echo "tester:tester" | chpasswd && adduser tester sudo # start working in the "tester" home directory WORKDIR /home/tester COPY ./src # Make the files owned by tester RUN chown -R tester:tester /home/tester # Switch to your new user in the docker image USER tester