9

我正在创建一些用于在开发机器上进行测试的 docker 映像。我计划为我们的主应用程序以及我们的每个外部依赖项(postgres、elasticsearch 等)构建一个。对于主应用程序,我正在努力决定是编写 Dockerfile 还是编译要托管的映像。

一方面,随着时间的推移,Dockerfile 很容易共享和修改。另一方面,我希望在简单提交新图像之前,在 vim 中进行高级配置(自定义应用程序属性文件)会更容易。

我知道无论哪种方式我都可以得到相同的结果,但我正在寻找任何一个方向的优点、缺点和陷阱。

作为旁注,我计划使用Fig将所有这些包装在一起。我对这个工具的最初印象是非常积极的。

谢谢!

4

2 回答 2

13

使用 Dockerfile:

  • 您有一个描述映像是如何构建的“审计日志”。对我来说,如果要在更多人工作且可维护性应优先考虑的生产管道中使用它,这是基本的。
  • 您可以自动化映像的构建过程,这是一种使用系统更新更新容器的简单方法,或者如果它必须参与持续交付管道。
  • 这是创建容器层的更简洁的方法(每个 Dockerfile 命令都是不同的层)

更改容器并提交更改非常适合测试目的和概念测试的快速开发。但是如果你打算在一段时间内使用结果图像,我肯定会使用 Dockerfiles。

除此之外,如果您必须修改文件并使用 bash 工具(awk、sed...)执行此操作,结果非常繁琐,您可以在构建过程中从外部添加您希望的任何文件。

于 2015-01-23T19:59:38.920 回答
12

我完全同意 Javier 的观点,但您需要了解,使用 dockerfile 创建的一个图像可能与 1 天后使用相同版本的 dockerfile 构建的图像不同。

也许在您的构建过程中,您会自动检索应用程序或操作系统等的最新更新......</p>

而此时如果你需要重现崩溃或任何你不能依赖的 dockerfile。

于 2016-01-20T11:15:55.017 回答