FROM centos:7RUN useradd dockeruserUSER dockeruserVolUME /data
在主持人:
mkdir dataecho "hello from host" > data/host-msg.txtdocker run -ti --rm -v $(pwd)/data:/data testimage bash
在容器内:
echo "hello from container" > /data/container-msg.txtbash: /data/container-msg.txt: Permission denIEd
在容器中列出目录内容:
drwxr-xr-x 2 12345 13000 25 Feb 12 21:36 datadrwxr-xr-x 5 root root 360 Feb 12 21:36 devdrwxr-xr-x 1 root root 62 Feb 12 21:36 etc
数据目录以uID / gID格式显示所有权,而不是username / groupname.
我已阅读了许多描述此行为的文章和问题以及various strategies至workaround.
但.在我当地的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,开箱即用.
有什么可能解释这种行为?实验室VM上的LDAP是否以某种方式在文件系统级别引入权限问题?有什么具体的东西,我可以要求我们的运营团队检查或暂时禁用尝试解决此问题?
最后也许是最重要的一点,如果主机安装卷上的权限问题对于我来说在一个干净的CentOS或Fedora工作站上似乎根本不是问题那么为什么它仍然是Docker社区中的一个东西呢?这些设置中是否有一些配置与其他人使用的配置(包括我的团队的实验室虚拟机)根本不同,事情才有效?
解决方法The data directory shows the ownership in uID/gID format rather than
username/groupname.
这是因为您的容器没有此uID / guID的映射(检查/ etc / passwd).实际上,实际文件总是有uID / guID.它只是应用程序/ *** 作系统的一个功能,可以返回名称.尝试从容器内部/外部统计路径.他们应该有相同的uID / guID
stat /datastat /path/on/host总结
以上是内存溢出为你收集整理的linux – Docker主机安装的卷权限全部内容,希望文章能够帮你解决linux – Docker主机安装的卷权限所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)