Build 在主机上装载Docker卷,但生成文件;不变的;?
我当前项目中的集成测试需要一段时间才能运行,如果能够使用Docker在本地运行这些测试,并在代码运行时继续使用这些测试,那就太好了。我现在的计划是创建一个执行以下操作的脚本:Build 在主机上装载Docker卷,但生成文件;不变的;?,build,docker,integration-testing,immutability,Build,Docker,Integration Testing,Immutability,我当前项目中的集成测试需要一段时间才能运行,如果能够使用Docker在本地运行这些测试,并在代码运行时继续使用这些测试,那就太好了。我现在的计划是创建一个执行以下操作的脚本: 将代码复制到/tmp 启动将此文件夹作为卷装载到主机上的Docker容器 在容器内运行测试 如果测试成功,请卸下容器 在开始创建此脚本之前,我想知道Docker是否支持从主机装载“不可变”卷,这样我就不需要手动将文件复制到/tmp?为了澄清,我希望将代码装载到Docker中,但我不希望在主机和容器之间共享文件夹。相反,我希
/tmp
/tmp
?为了澄清,我希望将代码装载到Docker中,但我不希望在主机和容器之间共享文件夹。相反,我希望主机中所做的更改保留在主机上,容器中所做的更改保留在容器中(有点像Clojure中数据结构中的“结构共享”)
如果这不可能,那么我未来的脚本看起来是个好主意还是可以改进?您可以:
注意末尾的ro
。您也可以为读写指定rw
,这是默认值
从主机装入卷后,可以将所需文件复制到容器中,例如cp-a/container testdir/writable testdir
或者,您可以
将主机中的文件添加到容器中,作为Dockerfile
和docker build
的一部分,为什么需要卷?你每次都能用Docker's将代码添加到你的容器中吗?你是对的,我在写了这个问题后开始考虑这个问题。不过我想那会管用的。我能想到的唯一缺点是,我每次都需要在Docker文件中构建一个映像,而不是重复使用一个预构建的映像,然后只装载一个卷,我认为这样可以加快一点速度。这是真的。但是,如果Dockerfile不需要代码来构建映像的其余部分(即安装依赖项),则可以在Dockerfile的末尾使用COPY
命令,以便缓存其他层。请注意,他希望主机上的更改保留在主机上,而容器中的更改保留在容器中。以只读方式装载会将主机更改放入容器中。同意,但问题的标题是“装载主机上的Docker卷,但使文件“不可变”?“所以我认为他不希望容器能够影响主机。这是真的,但我仍然希望容器能够修改文件。啊,您正在寻找docker缺少的一项功能:一步就可以将文件从主机复制到正在运行的容器中。我将用另外两种方法更新我的答案。
docker run -v /tmp/host-randomtest:/container-testdir:ro