Dockerfile的优点

时间:2015-10-03 06:10:46

标签: docker dockerfile

我们可以创建Docker镜像,并且无需Dockerfile即可将它们推送到Hub。为什么有一个Dockerfile很有用?它的优点是什么? Dockerfile创建是一个耗费时间很长的过程,只能由人工制作。 我想知道基于基础图像,已提交图像和基于Dockerfile的图像之间的主要区别是什么。

3 个答案:

答案 0 :(得分:4)

Dockerfile用于通过在docker镜像上指定我们想要的所有步骤来实现工作自动化。

  

Dockerfile是一个包含用户所有命令的文本文档   可以调用命令行来组合图像。使用docker   构建用户可以创建执行多个的自动构建   命令行指令连续。

是的,我们可以创建Docker镜像,但每当我们想要进行任何更改时,您必须手动更改并测试并推送它。

或者如果您将Dockerfile与dockerhub一起使用,那么它将自动重建并在每次修改时进行更改,如果出现错误,则重建将失败。

Dockerfile的优点

  • Dockerfile是Docker镜像的自动脚本
  • 当您想要在不同的OS风格上测试相同的设置时,手动图像创建将变得复杂,然后您必须为所有风格创建图像,但是通过在dockerfile中进行小的更改,您可以创建不同风格的图像
  • 它具有简单的图像语法,可以自动更改,手动操作会花费更多时间。
  • Dockerfile具有易于理解的系统步骤,易于了解基本图像中确切的配置变化。

Dockerfile与dockerhub的优势

  • Docker Hub为Dockerfile提供私有存储库。
  • Dockerfile可以在团队和组织之间共享。
  • 自动构建图片
  • 附加到您的存储库的Webhooks,允许您在将图像或更新的图像推送到存储库时触发事件
  • 我们可以将Dockerfile放在GithubBitbucket

已提交映像与Dockerfile映像之间的区别

提交的图片:它将容器的文件更改或设置提交到新图像中。

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes

  -a, --author=       Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
  -c, --change=[]     Apply Dockerfile instruction to the created image
  --help=false        Print usage
  -m, --message=      Commit message
  -p, --pause=true    Pause container during commit

调试容器并将更改后的设置导出到另一个图像是一个不错的选择。但是docker建议使用dockerfile see here或者我们可以说commit是docker的版本化或图像的备份。

  

提交操作不包含卷中包含的任何数据   安装在容器内。

     

默认情况下,正在提交的容器及其进程将是   提交图像时暂停。这降低了可能性   在创建过程中遇到数据损坏   承诺。如果不希望出现此行为,请将“p”选项设置为false。

基于Dockerfile的图片:

它始终使用基本图像来创建新图像。假设您在dockerfile中进行了任何更改,那么它将在新图像上应用所有dockerfile步骤并创建新图像。但是使用相同的图像。

我的观点我们必须使用在图像上具有我们想要的所有步骤的dockerfile,但是如果我们从提交创建图像,那么我们必须记录如果我们想要创建新图像而可能需要的所有更改我们可以说dockerfile是图像的文档。

答案 1 :(得分:2)

优点是,即使您没有可以推送图像的共享图像注册表,您仍然可以使用&#34;配方&#34; (Dockerfile used by docker build),只有几KB的文本,可以很容易地传递(轻和小)。

这种声明性格式确保您能够重新构建相同的图像,并且可以获得可重复的结果。

答案 2 :(得分:0)

Docker commit

使用Docker commit命令方法创建新图像容易出错,需要记住并更新图像以进行小的更改并每次都提交。

Dockerfile

  • Dockerfile提供了使用set自动执行所有步骤的功能 在构建期间执行的指令(参见docker build命令)以创建最终图像以及提交图像。

  • Dockerfile可以在任何地方使用,所有配置和准备运行的方法。

  • Dockerfile可以与他人共享,也可以由其他人轻松更新。它 允许根据需要轻松更改图像 例如安全加固,添加或更新用户详细信息等。