如何轻松访问容器内部和外部的数据?

我有一个在其中设置了MinGW编译器的docker容器。 我想用它来开发。 那就是我想编译,testing,编辑,编译,testing…

集装箱也将用于CIpipe道,最终用于生产生产。 通过使用相同的容器,我们确保构build环境的一致性。

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

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

# 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/ 

我的用户在组docker,但组docker没有在/ var / lib / docker上的读取权限,因此无法访问卷的_data目录。

我曾尝试作弊和使用sudo来调整文件夹权限,以便组docker已经读取path的权限,但这些权限重新启动时重写 – 毫无疑问,当docker服务器启动。

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

当我最初阅读文档时,看起来只有命名卷可以使用,但我刚刚发现,目录也可以用作源文件。 例如:

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

由于我想使用与本地开发相同的容器并运行CItesting脚本,因此我在.bashrc中设置了一个环境variables,然后在我的运行脚本中进行testing。 如果存在,我使用它指向的目录,如果没有,我使用一个命名的容器,如果需要的话创build它。

Docker包含一个基于用户名空间的用户/组重新映射function – 默认情况下不启用。

在Docker守护进程上启用“userne-remap”,按照指示: https ://docs.docker.com/engine/security/userns-remap/