与gitlab-ci中的父作用域docker容器共享docker容器中的目录?

时间:2018-08-09 12:34:54

标签: python docker gitlab-ci

运行带有docker run --rm --network host --volume $PWD/some_dir:/tmp/some_dir ...之类的docker容器时,我正在使用一个卷。在容器内,我正在运行Python代码,该代码创建目录/tmp/some_dir(如果目录已经存在,则将其覆盖)并将文件放入其中。如果我在本地开发机上运行docker容器,则在运行容器后,文件将在/tmp/some_dir的开发机上可用。

但是,如果我在gitlab-ci作业中运行相同的容器(“ docker in docker”,则该容器不是作业本身使用的映像),则无法在/tmp/some_dir中访问文件(该目录存在)。

丢失文件的原因可能是什么?

2 个答案:

答案 0 :(得分:0)

您是否在正常服务器上检查了正常目录?

在DinD上下文中创建$ PWD / some_dir,结果应在运行Gitlab CI容器的服务器中的docker用户主目录中创建的some_dir中。

答案 1 :(得分:0)

docker run -v选项的前半部分(如果是目录路径)是主机上专门的目录。如果容器可以访问Docker套接字并启动另一个容器,则它提供的任何目录映射都在主机文件系统的空间中,而不是在容器文件系统的空间中。 (如果您实际上是在使用Docker-in-Docker,则可能是运行嵌套Docker守护程序的容器的文件系统空间,但它仍然不是调用容器的文件系统空间。)

最直接的选择是在内部容器停止之后docker rm之前,docker cp将文件从内部容器中取出;它可以复制整个目录树。