Tag: 不变性

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

我当前项目中的集成testing需要一段时间才能运行,并且能够使用Docker在本地运行它们并在运行时继续使用代码,这将是非常好的。 我现在的计划是创build一个脚本,执行以下操作: 将代码复制到/tmp的随机文件夹中 启动一个Docker容器,将该文件夹作为主机挂载到一个卷上 运行容器内的testing 如果testing成功,则取出容器 在开始创build这个脚本之前,我想知道Docker是否支持从主机挂载“不可变”的卷,所以我不需要手动将文件复制到/tmp ? 为了澄清,我想将代码安装到Docker中,但是我不想在主机和容器之间共享文件夹。 相反,我希望主机上所做的更改留在主机上,而容器中的更改留在容器中(有点像Clojure中数据结构中的“结构共享”)。 如果这是不可能的,那么我的未来剧本看起来是个好主意,还是可以改进?

如何用Docker实现“一二进制”原则

一个二进制原则在这里解释: http : //programmer.97things.oreilly.com/wiki/index.php/One_Binary指出,应该… “构build一个可以在发布pipe道的所有阶段识别和升级的二进制文件,在环境中保存特定于环境的详细信息,例如,这可能意味着将它们保存在组件容器中,已知文件中或path。” 我看到许多开发人员工程师通过在每个环境中创build一个Docker镜像(即,my-app-qa,my-app-prod等)来违反这一原则。 我知道Docker支持不可变的基础架构,这意味着部署后不会更改映像,因此不会在部署后上传或下载configuration。 在不可改变的基础设施和一个二元原理之间是否存在一个权衡,还是它们可以相互补充? 当涉及到从代码分离configuration什么是在Docker世界的最佳做法? 应采取以下哪一种方法… 1)创build一个基本的二进制镜像,然后configuration一个Dockerfile,通过添加环境特定的configuration来扩充这个镜像。 (即我的应用程序 – >我的应用程序产品) 2)在部署时将一个仅二进制docker映像部署到容器中,并通过环境variables传递configuration等。 3)将Docker文件部署到容器后上传configuration 4)从configurationpipe理服务器中从容器内正在运行的泊坞窗镜像下载configuration。 5)保持主机环境中的configuration,并通过绑定挂载使其可用于正在运行的Docker实例。 有没有更好的方法没有提到上面? 如何使用不可变的基础架构来执行一个二进制原则? 它可以做到还是有一个权衡? 最佳做法是什么?