我在使用类似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(该目录存在)。
丢失文件的原因可能是什么?
请您参考如下方法:
docker run -v选项的前半部分,如果是目录路径,就是专门在宿主机上的一个目录。如果一个容器可以访问 Docker 套接字并启动另一个容器,则它提供的任何目录映射都在主机文件系统的空间中,而不是容器文件系统的空间中。 (如果您实际上正在使用 Docker-in-Docker,它可能是运行嵌套 Docker 守护程序的容器的文件系统空间,但它仍然不是调用容器的文件系统空间。)
最直接的选择是 docker cp在内部容器停止后但在你 docker rm 之前将文件从内部容器中取出;它可以复制整个目录树。
