2017-07-04 59 views
1

我有一个Docker容器,里面安装了MinGW编译器。我想用它来开发。这是我想编译,测试,编辑,编译,测试...如何轻松访问容器内部和外部的数据?

该容器也将用于CI管道,并最终用于生产生产构建。通过使用相同的容器,我们确保构建环境的一致性。

我的主机有我的代码编辑等开发工具,而容器有编译器,所以显然文件需要共享。

我已经设置了一个卷。不幸的是,我不能用我的用户帐户访问:

# ls -lAFd /var/lib/docker 
drwx--x--x 11 root docker 4096 Jul 4 09:11 /var/lib/docker/ 
# ls -lAFd /var/lib/docker/volumes/mingw_build/_data 
drwxr-xr-x 6 alastair docker 4096 Jul 3 14:31 /var/lib/docker/volumes/mingw_build/_data/ 

我的用户是一群码头工人,但一群码头工人没有阅读的/ var/lib中/泊坞窗的权限,因此无法访问该卷的_data目录。

我曾尝试作弊,并使用sudo来调整文件夹权限,以便组码头已经读取路径下的所有权限,但这些权限会在重新启动时被重写 - 毫无疑问,当码头服务器启动时。

任何人都可以找出解决办法吗?我试过使用符号链接,但它们总是继承路径元素的最严格的权限。

回答

1

当我最初读它看起来像只名为卷的文件可以使用,不过我已经发现,目录,还可以被用作来源。例如: -

mkdir /home/alastair/mingw_build 
docker run -v /home/alastair/mingw_build:/home/mingw_build/build mingw_build 

因为我想用相同的容器和运行脚本CI测试为地方发展,我在运行脚本设置在我的.bashrc它的环境变量,并进行测试。如果它存在,我使用它指向的目录,如果没有,我使用一个命名的容器,如果需要的话创建它。

0

Docker包含用户/组重新映射功能 - 基于用户命名空间 - 默认情况下未启用。

按照说明进行操作启用泊坞窗守护“userne重新映射”:https://docs.docker.com/engine/security/userns-remap/

+0

看起来像是一种可能性,但名称空间目录仍在/ var/lib/docker下,因此仍可能无法访问。当我有机会时,我会尝试一下。 – AlastairG

+0

使用在您链接的文章中指定的配置创建/etc/docker/daemon.json(它以前不存在)之后,docker服务始终无法启动。删除文件,一切都很好。 – AlastairG

+0

您当前的码头版本是什么? –