在主机上挂载Docker卷,但使文件“不可变”?

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

  1. 将代码复制到/tmp的随机文件夹中
  2. 启动一个Docker容器,将该文件夹作为主机挂载到一个卷上
  3. 运行容器内的testing
  4. 如果testing成功,则取出容器

在开始创build这个脚本之前,我想知道Docker是否支持从主机挂载“不可变”的卷,所以我不需要手动将文件复制到/tmp ? 为了澄清,我想将代码安装到Docker中,但是我不想在主机和容器之间共享文件夹。 相反,我希望主机上所做的更改留在主机上,而容器中的更改留在容器中(有点像Clojure中数据结构中的“结构共享”)。

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

您可以以只读模式安装主机卷 :

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

注意最后的ro 。 您可以指定rw作为读写,这是默认设置。

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

或者,您可以将主机中的文件作为DockerfileDockerfile docker build一部分ADD到容器中。