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 --privileged
到Dockerfile
之间的所有用户,并将该用户专门分配给该用户。没有工作。
最终解决方案相对简单:
我的数据目录的父目录已所有人可以读,也即它不是的组成员的用户。所以我能够毫无问题地安装它。 为了达到实际数据,我确实将Dockerfile
中的用户添加到组,并确保它具有相同的名称,GID
。最后,导航到数据目录并读取任何我想要的文件是没问题的。
所以我不确定我试图挂载的目录是否只是一个特殊情况,或者一般情况下无法挂载具有特定组访问权限的目录。 我发现了这个解决方法,但如果我想要的目录是/
,我仍然没有解决方案。
试试这个:绑定的安装
docker run -v /path/on/host:/path/on/container:ro my/image
默认行为是RW,但你可以关掉这个只读(:RO)
您是否尝试过在'privileged'模式下运行呢? – tgogos
是的,不幸的是结果相同 – Val