2017-02-13 73 views
4

在我们的内部测试环境中,我们从基于vSphere的服务器配置CentOS VM。这些图像是带有包和相关配置的vanilla 7.1以支持通过LDAP进行身份验证。 Docker 1.13.1在xfs文件系统上安装了OverlayFS驱动程序。Docker主机安装卷权限

FROM centos:7 
RUN useradd dockeruser 
USER dockeruser 
VOLUME /data 

在主机:

mkdir data 
echo "hello from host" > data/host-msg.txt 
docker run -ti --rm -v $(pwd)/data:/data testimage bash 

容器内:

echo "hello from container" > /data/container-msg.txt 
bash: /data/container-msg.txt: Permission denied 

清单容器内的目录内容:

drwxr-xr-x 2 12345 13000 25 Feb 12 21:36 data 
drwxr-xr-x 5 root root 360 Feb 12 21:36 dev 
drwxr-xr-x 1 root root  62 Feb 12 21:36 etc 

data目录显示uid/gid格式的所有权而不是用户名/组名。

我已阅读很多文章和问题描述此行为和variousstrategiesworkaround

但是。在我本地的Fedora 25开发系统上,我没有任何这种行为。我执行上述过程,可以写入主机挂载/数据挂载,目录列表显示用户名/组名。

/ 
    drwxrwxr-x 2 dockeruser dockeruser 4096 Feb 12 04:36 data 
    drwxr-xr-x 5 root  root   360 Feb 12 22:00 dev 
    drwxr-xr-x 1 root  root  4096 Feb 12 22:00 etc 

/data 
    -rw-rw-r-- 1 dockeruser dockeruser 21 Feb 12 22:04 container-msg.txt 

让一切尽可能相似的实验室配置我通过libvirt的站起来一个CentOS 7.1 VM我的开发系统上,并再次得到了相同的结果 - 没有与UID/GID映射,用户命名空间搞乱,没有。从容器内Just Worked容器内写入主机安装卷。

什么可能说明这种行为?实验室虚拟机上的LDAP是否在文件系统级别引入权限问题?有什么具体的我可以要求我们的运营团队检查或暂时禁用尝试和解决这个问题?

最后,也许最重要的是,如果主机装入卷上的权限问题对我来说似乎没有问题,那么无论是在干净的CentOS还是Fedora Workstation上,为什么它仍然会在Docker中继续存在社区?这些设置中是否有一些配置与其他人正在使用的基本不同(包括我们团队的实验室虚拟机),这些配置是否正常工作?

+0

你有没有找到任何解决方案? – Xplouder

回答

0

数据目录显示uid/gid格式的所有权,而不是 username/groupname。

这是因为你的容器没有这个uid/guid的映射(检查/ etc/passwd)。事实上,其实文件有uid/guid 总是。这只是应用程序/ os的函数来给出名称。尝试从内部/外部容器的路径stat。他们应该有相同的uid/guid

stat /data 
stat /path/on/host