我正在尝试以非root用户身份启动容器。正在生成的卷只具有root访问权限。容器的非root用户无法在容器的卷目录中写入。
docker-compose.yml
volumes:
- ./trm/workspace:/opt/kad/translation/workspace
Dockerfile:
RUN chown -R nonrootuser /opt/kad/translation/workspace
VOLUME /opt/kad/translation-resource-monitor/workspace
是否有任何方法可以创建具有非root用户写入权限的卷。
答案 0 :(得分:0)
未生成卷但使用主机权限挂载。 Dockerfile指令也是在运行容器之前的映像构建上执行的。在您的情况下,/opt/kad/translation/workspace
用户所拥有的nonrootuser
目录将被容器启动时由与主机上相同的uid / gid所拥有的./trm/workspace
替换。因此,在运行容器之前,您需要确保主机文件夹具有正确的权限,例如: G:
chown -R uid_of_nonrootuser_in_container:gid_of_nonrootuser_in_container \
./trm/workspace && docker-compose up -d
请注意,主机和容器中有不同的用户,因此您应该使用容器用户的uid和gid,而不是它的用户名和组名。要在容器中找到uid和gid id nonrootuser
。
另一种解决方案(正如Manish Joshi指出的那样)是为所有用户创建可写的目录:
chmod -R 0777 ./trm/workspace
但是它可以减少对文件夹安全性的控制。