Docker-挂载单个文件后所有权丢失

时间:2019-01-06 17:54:27

标签: docker permissions dockerfile chmod chown

我正试图适应Docker,但现在偶然发现了一个我还无法解决的微妙问题。

(我在Windows 10上运行,但是同样的问题也适用于Debian)

我想以非root用户身份运行我的容器入口点,该入口点已经在工作了。但是,我想要一个文件,其中已经设置了应用程序所需的权限(user:usergrp和chmod 600),如下所示:

 touch /app/application.properties && \
 chown user:usergrp /app/application.properties && \
 chmod 600 /app/application.properties

这确实有效。如果我只是在没有任何安装的情况下运行容器,则可以看到其设置正确:

-rw-------    1 user usergrp         0 Jan  6 18:32 application.properties

但是,当我使用单个文件装载覆盖文件时,所有权更改为 root:root 。相反,权限保持为600。

我的困惑来自于以下事实:卷挂载和单个文件挂载在这里的工作方式不同。在我的Dockerfile中,我还有一个目录,该目录被挂载覆盖,它保留所有权和权限

如何实现为单个文件装载保留所有权,还是必须以其他方式解决呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

我尝试重现此问题,并且发现某些命令组合会导致文件成为root用户,例如--mount source=test.properties,target=/app/test.properties

尝试使用这种方法来保留单个文件的所有权和权限。此命令组合在我的机器上可以正常工作。

--mount type=bind,source="$(pwd)"/test.properties,target=/app/test.properties