我是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
。最后,导航到数据目录并读取我想要的任何文件都没有问题。
所以我不确定我尝试挂载的目录是否只是一种特殊情况,或者通常无法挂载具有特定组访问权限的目录。
我发现了这种解决方法,但如果我想要的目录位于/
,我仍然无法解决。
答案 0 :(得分:0)
试试这个:
docker run -v /path/on/host:/path/on/container:ro my/image
绑定安装的默认行为是rw,但您可以将其切换为只读(:ro)