Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何轻松访问容器内外的数据?_Docker - Fatal编程技术网

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

Docker 如何轻松访问容器内外的数据?,docker,Docker,我有一个docker容器,里面安装了MinGW编译器。我想用它来发展。那就是我想编译,测试,编辑,编译,测试 该容器还将用于CI管道,并最终用于生产构建。通过使用相同的容器,我们可以确保构建环境中的一致性 我的主机有用于代码编辑等的开发工具,而容器有编译器,因此显然需要共享文件 我已经设置了一个卷。很遗憾,我无法使用我的用户帐户访问它: # ls -lAFd /var/lib/docker drwx--x--x 11 root docker 4096 Jul 4 09:11 /var/lib/

我有一个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/
我的用户在组docker中,但组docker对/var/lib/docker没有读取权限,因此无法访问卷的_数据目录

我曾经尝试过作弊,并使用sudo来调整文件夹权限,这样组docker就可以一直拥有读取权限,但这些权限会在重新启动时被重写——毫无疑问,是在docker服务器启动时


有人能想出一个解决办法吗?我尝试过使用符号链接,但它们总是继承path元素最严格的权限。

Docker包含一个基于用户名称空间的用户/组重新映射功能,默认情况下未启用该功能


在docker守护进程上启用“userne remap”,方法是按照此处的说明进行操作:

当我最初阅读文档时,似乎只能使用命名卷,但我刚刚发现目录也可以用作源。例如:

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

由于我希望使用与本地开发相同的容器和运行脚本进行CI测试,因此我在.bashrc中设置了一个环境变量,并在运行脚本中对其进行测试。如果它存在,我将使用它指向的目录,如果没有,我将使用命名容器,在必要时创建它。

这看起来是可能的,但名称空间目录仍在/var/lib/docker下,因此可能仍然无法访问。如果有机会,我会尝试一下。在使用您链接的文章中指定的配置创建/etc/docker/daemon.json(它以前不存在)后,docker服务一直无法启动。删除文件,一切正常。您当前的docker版本是什么?docker版本17.06.0-ce,版本02c1d87。您是否将用户添加到docker组<代码>sudo usermod-aG docker$USER