安装时名为volume的docker会获得哪些权限?

时间:2016-03-02 21:46:05

标签: docker file-permissions docker-compose

我从1.9开始在docker中尝试新的命名卷。它们应该替换仅数据容器。但是,我很难将命名卷用于以下用例:

我有几个运行应用程序的容器作为一些非root用户,称之为appuser;我确实修复了我的基本图像中的uid和gid,从中导出了所有应用程序容器图像。每个应用程序都将日志文件写入appuser拥有的文件夹。然后,我设置了一个仅限数据的容器,该容器派生自相同的基本映像。使用volumes-from指令,我挂载这个仅数据容器来存储我的日志文件。它的工作原理是因为uid是固定的。

相反,如果我尝试使用命名卷,则应用程序无法写入其日志文件,因为命名卷由某些用户拥有,该用户依赖于卷驱动程序(在我的“本地”用户的用户xfs)驱动程序。是否有可能在指定的卷中创建具有正确权限的日志文件夹?

或者更普遍地说 - 如果安装指定卷的容器中的应用程序以非root用户身份运行,那么命名卷是否有用?从我刚才描述的内容来看,这样的应用程序将无法在命名卷中写入或创建任何文件夹。

1 个答案:

答案 0 :(得分:3)

根据我的经验,似乎命名卷总是挂载为root
我检查了命名卷以找到主机的文件夹,然后更改了主机文件夹上的一些权限,直到挂载主机文件夹直接将其作为非root用户使用

-v /var/lib/docker/volumes/builds/:/mnt/build

我得到了

[user@d5003c91f6d1 ~]$ ll /mnt
total 4
drwxr-xr-x 2 user user 4096 Sep 18 19:29 build

但如果我回去使用相同的命名量

-v builds:/mnt/build

然后我得到了

[user@42f237282128 ~]$ ll /mnt
total 4
drwxr-xr-x 2 root root 4096 Sep 18 19:29 build

我要求this question找到改变此方法的方法