Docker容器卷只具有root访问权限

时间:2017-11-02 22:51:19

标签: docker docker-compose dockerfile docker-volume

我正在尝试以非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用户写入权限的卷。

1 个答案:

答案 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

但是它可以减少对文件夹安全性的控制。