Docker - 将数据从主机上的只读目录导入容器

问题描述:

我是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。所以这显然是一个权限问题。

我在google上看到的要点是,如果你绑定一个卷,你需要有读写权限。 所以我正在寻找一种替代方法,可能与docker volume

数据目录很大,所以任何类型的重复都不可行。另外,更改权限是不可能的。

系统信息:

docker Server Version: 17.03.1-ce

Operating System: Ubuntu 16.04.2 LTS


编辑:

所以,我终于想通了@barat的有益的评论之后。

问题是,我试图在容器中装载的确切目录的权限设置为只有特定组的成员才能读取内容。我尝试了从docker run -u userwithaccess,docker run --privilegedDockerfile之间的所有用户,并将该用户专门分配给该用户。没有工作。

最终解决方案相对简单:

我的数据目录的父目录已所有人可以读,也即它不是的成员的用户。所以我能够毫无问题地安装它。 为了达到实际数据,我确实将Dockerfile中的用户添加到,并确保它具有相同的名称,GID。最后,导航到数据目录并读取任何我想要的文件是没问题的。

所以我不确定我试图挂载的目录是否只是一个特殊情况,或者一般情况下无法挂载具有特定组访问权限的目录。 我发现了这个解决方法,但如果我想要的目录是/,我仍然没有解决方案。

+0

您是否尝试过在'privileged'模式下运行呢? – tgogos

+0

是的,不幸的是结果相同 – Val

试试这个:绑定的安装

docker run -v /path/on/host:/path/on/container:ro my/image 

默认行为是RW,但你可以关掉这个只读(:RO)

+0

给了我上面提到的同样的错误信息 – Val

+1

docker用户/组是否可以读取这个路径?因为海事组织做的“泊坞窗东西”坐骑等作为“码头”用户,再加上如果你有“码头”组创建 - 码头将检查当前用户是否在这个组,以便您可以使用码头命令没有sudo ...这可能意思是说,码头组应该至少有(?)读取此路径的访问权限...... – barat

+0

问题是,我对权限没有影响,这意味着我知道码头组没有任何访问权限。码头用户是指用户调用码头命令?这个有访问权限,我试图把它传递给容器,但没有成功...... – Val