Dockerfile与Docker映像

Dockerfile与Docker映像,docker,virtualization,dockerfile,fig,Docker,Virtualization,Dockerfile,Fig,我正在创建一些docker映像,用于在开发人员机器上进行测试。我计划为我们的主应用程序以及每个外部依赖项(postgres、elasticsearch等)构建一个应用程序。对于主应用程序,我正在努力决定编写Dockerfile或编译要托管的图像 一方面,Dockerfile很容易随时间共享和修改。另一方面,我希望在提交新映像之前,在vim中进行高级配置(自定义应用程序属性文件)会容易得多 我知道无论哪种方式我都能得到同样的结果,但我在寻找任何一个方向的优点、缺点和缺点 作为补充说明,我计划使用。

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

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

我知道无论哪种方式我都能得到同样的结果,但我在寻找任何一个方向的优点、缺点和缺点

作为补充说明,我计划使用。我对这个工具的最初印象是非常积极的

谢谢

使用Dockerfile:

  • 您有一个描述如何构建映像的“审核日志”。对于我来说,如果它将被用于生产管道中,在那里有更多的人在工作,并且可维护性应该是优先考虑的,那么这是基本的
  • 您可以自动化映像的构建过程,这是使用系统更新更新容器的一种简单方法,或者如果容器必须参与连续交付管道,也可以
  • 这是一种更简洁的创建容器层的方法(每个Dockerfile命令都是不同的层)
更改容器并提交更改对于测试目的和概念测试的快速开发非常重要。但是,如果您计划使用结果图像一段时间,我肯定会使用Dockerfiles


除此之外,如果您必须修改一个文件并使用bash工具(awk、sed…)进行修改,结果会非常乏味,您可以在构建过程中从外部添加任何您想要的文件。

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

也许在您的构建过程中,您会自动检索应用程序或操作系统的最后更新


此时,如果您需要重现崩溃或任何您不能依赖dockerfile的内容。

与将应用程序作为源代码或编译的二进制文件分发相同的讨论。我没有这样想过。我想我最初的想法是,我可以制作一个Dockerfile,然后简单地通过电子邮件发送给任何没有上下文的人,这有点缺陷。与其将配置文件作为运行命令进行编辑,我开始发现将它们作为卷添加仍然是一种很好的媒介,而不必完全下意识地提交映像。这对我帮助很大。我真不敢相信我以前没想过这个!DockerFile需要完全指定它们调用和包含的内容的版本,否则您将获得此处描述的不可复制的行为。如果dockerfile(或makefile,或任何构建工具)为不同的运行生成不同的结果,那么它就写错了。如果构建工具是从某种形式的存储库中提取的,而这种存储库不允许您确保每次都获得相同的内容,那么存储库的设计是错误的。