在主机上安装Docker卷但是生成文件"不可变"?

时间:2015-02-18 12:13:18

标签: build docker integration-testing immutability

我当前项目中的集成测试需要一段时间才能运行,能够在本地使用Docker运行它们并在运行时继续使用代码会很好。我现在的计划是创建一个执行以下操作的脚本:

  1. 将代码复制到/tmp
  2. 中的随机文件夹
  3. 启动一个Docker容器,将该文件夹作为主机上的卷安装
  4. 在容器内运行测试
  5. 如果测试成功,则删除容器
  6. 在我开始创建这个脚本之前,我想知道Docker是否支持挂载" immutable"来自主机的卷,所以我不需要手动将文件复制到/tmp?为了澄清,我想将代码安装到Docker中,但我不想在主机和容器之间共享文件夹。相反,我希望主机中所做的更改留在主机上,并且容器中的更改留在容器中(有点像"结构共享"在Clojure的数据结构中)

    如果这不可能,那么我未来的脚本看起来是个好主意还是可以改进?

1 个答案:

答案 0 :(得分:1)

你可以mount a host volume in read-only mode

docker run -v /tmp/host-randomtest:/container-testdir:ro

注意最后的ro。您也可以指定rw进行读写,这是默认值。

从主机装入卷后,您可以将所需的文件复制到容器中,例如cp -a /container-testdir /writable-testdir

或者,您可以ADDDockerfile作为docker build和{{1}}的一部分从主机进入容器的文件。