Mat*_*t R 28 volumes docker file-ownership
我正在使用Docker(1.3.1)在容器内构建RPM:
docker run -v /home/matt/build:/build build-rpm /build/build-pkg.sh
Run Code Online (Sandbox Code Playgroud)
这工作正常(我的用户在docker组中,因此我不需要sudo)并.rpm在当前目录中删除已完成的文件.问题是该文件是由root拥有的.
我如何安排它,以便创建文件由我运行docker的同一用户拥有?
您可以尝试创建(在自定义映像的Dockerfile中)用户并将其设置为容器使用的用户
RUN adduser --system --group --shell /bin/sh auser \
&& mkdir /home/auser/bin
USER auser
Run Code Online (Sandbox Code Playgroud)
然后检查是否docker run -v /home/matt/build:/build build-rpm在/ build中安装共享文件夹auser.
问题2259中提到的另一个选项:
如果您
chown在绑定安装之前的卷(在主机端),它将工作.
在这种情况下,您可以这样做:
mkdir /tmp/www
chown 101:101 /tmp/www
docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www
Run Code Online (Sandbox Code Playgroud)
(假设这
101:101是容器UID:GID中的www-data用户.)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17822 次 |
| 最近记录: |