代码之家  ›  专栏  ›  技术社区  ›  thinwybk

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

  •  1
  • thinwybk  · 技术社区  · 6 年前

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

    但是如果我运行同一个容器作为 gitlab-ci 作业(“docker中的docker”,容器不是用于作业本身的图像)文件在中不可访问 /tmp/某个目录 (目录存在)。

    丢失文件的原因是什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   David Maze    6 年前

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

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

        2
  •  0
  •   Rémy    6 年前

    你检查好服务器上的好目录了吗?

    在DinD上下文中创建一个$PWD/some-dir,结果应该是在运行Gitlab CI容器的服务器上的docker user home dir中创建的some-dir。