我使用Docker(1.3.1)在容器内构建RPM:
docker run -v /home/matt/build:/build build-rpm /build/build-pkg.sh
这很好(我的用户在docker
组中,因此我不需要sudo)并在当前目录中删除已完成的.rpm
文件。问题是该文件是由root拥有的。
我如何安排它以便创建文件由与我运行docker的用户共同拥有?
答案 0 :(得分:5)
您可以尝试在用户创建(在自定义图像的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
。
issue 2259中提到的另一个选项:
如果在绑定安装之前
chown
卷(在主机端),它将起作用 在这种情况下,您可以这样做:
mkdir /tmp/www
chown 101:101 /tmp/www
docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www
(假设
101:101
是您容器中UID:GID
用户的www-data
。)
答案 1 :(得分:1)
Docker以root用户身份运行,并且不知道您的用户在其虚拟环境中的位置(即使您已经在sudoers组中)。但是,您可以在构建可以随意调用的docker镜像时创建非root用户。
# 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