【发布时间】:2017-09-22 07:33:05
【问题描述】:
我是 Docker 的新手,所以如果答案很明显,请多多包涵。
我正在尝试让我的 docker 容器访问主机上的共享数据目录,该目录具有特定的组权限并且对于预期用户的组是只读的。
我已经尝试过docker run -it -v /data:/data ubuntu /bin/bash,结果出现错误docker: Error response from daemon: error while creating mount source path '/data': mkdir /data: permission denied。所以这显然是一个权限问题。
我在谷歌上看到的要点是,如果你绑定挂载一个卷,你需要有读写权限。
所以我正在寻找另一种方式,可能是docker volume?
数据目录很大,所以任何形式的复制都是不可行的。此外,无法更改权限。
系统信息:
docker Server Version: 17.03.1-ce
Operating System: Ubuntu 16.04.2 LTS
编辑:
所以在@barat 的有用评论之后,我终于想通了。
问题是,我试图在容器内挂载的确切目录的权限设置为只有特定组的成员才能读取内容。我尝试了从docker run -u userwithaccess、docker run --privileged 到在Dockerfile 中添加用户并专门将相关组分配给该用户的所有方法。没有任何效果。
最后解决的方法比较简单:
我的数据目录的父目录对每个人都具有读取权限,即不是组成员的用户。所以我能够毫无问题地安装它。
为了获得实际数据,我确实将Dockerfile 中的用户添加到组,并确保它具有相同的名称和GID。最后导航到数据目录并读取我想要的任何文件都没有问题。
所以我不确定我尝试挂载的目录是否只是一种特殊情况,或者是否通常无法挂载具有特定组访问权限的目录。
我找到了这个解决方法,但如果我想要的目录位于/,我仍然没有解决方案。
【问题讨论】:
-
你试过在
privileged模式下运行吗? -
是的,不幸的是结果相同
标签: docker ubuntu-16.04 large-data-volumes