2016-03-02 43 views
2

我从1.9开始在Docker中试验新的命名卷。他们应该取代纯数据容器。但是,我很难在以下用例中使用命名卷:装载后,名为volume的docker会获得哪些权限?

我有几个容器以某些非root用户的身份运行应用程序,称其为appuser;我确实在我的基本映像中修复了所有应用程序容器映像派生的uid和gid。每个应用程序都将日志文件写入appuser拥有的文件夹。然后,我建立了一个只有数据的容器,从相同的基础图像派生而来。使用volumes-from指令,我装入这个仅用于数据的容器来存储我的日志文件。它的工作原理是因为uid是固定的。

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

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

+0

这可能是与该卷驱动器的问题。我会先用“本地”驱动程序尝试它。我相信它没有用户权限问题。 – dnephin

+0

我在整个使用“本地”驱动程序。 –

回答

1

根据我的经验,这似乎命名卷总要得到安装为root
我检查了命名容积找到主机的文件夹,然后改变了一些对主机的文件夹权限,直到直接安装在主机的文件夹安装它作为使用

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

我得到

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

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

非root
-v builds:/mnt/build 

然后我得到

[[email protected] ~]$ ll /mnt 
total 4 
drwxr-xr-x 2 root root 4096 Sep 18 19:29 build 

我问this question找到一种方法来改变这种