Dockerfile的优点

我们可以创buildDocker镜像,并将它们全部推送到Hub,而不需要Dockerfile。 为什么有一个Dockerfile有用? 它有什么好处? Dockerfile的创build是一个高耗时的过程,只能由人来完成。 我想知道基于基础的图像,提交的图像和基于Dockerfile的图像之间的主要区别是什么。

Dockerfile上指定我们想要的所有步骤来用于工作自动化。

Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以组装图像的所有命令。 使用Docker构build用户可以创build一个自动构build,连续执行几条命令行指令。

是的,我们可以创buildDocker镜像,但是每当我们想要做任何改变的时候,你都必须手动改变并testing并推送它。

或者如果你使用dockerhub的Dockerfile,那么它会自动重build,并对每个修改进行更改,如果有错误,那么重build将失败。

Dockerfile的优点

  • Dockerfile是Docker镜像的自动化脚本
  • 手动图像创build将变得复杂,当你想testing相同的设置不同的操作系统风格,那么你必须创build所有风格的图像,但通过在dockerfile中的小改变,你可以创build不同的风味的图像
  • 它具有简单的图像语法,并自动做许多更改,手动将需要更多的时间。
  • Dockerfile有一个系统的步骤,可以让别人很容易理解,并且很容易知道在基本映像中改变了什么确切的configuration。

Dockerfile与dockerhub的优点

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

提交的图像和Dockerfile图像之间的区别

提交的图像 :它提交容器的文件更改或设置到一个新的图像。

 Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes -a, --author= Author (eg, "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 

这是一个很好的select,debugging容器和导出更改设置到另一个图像。但dockerbuild议使用dockerfile 在这里看到,或者我们可以说提交是版本docker或图像的备份。

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

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

基于Dockerfile的图像:

它总是使用基础图像来创build新的图像。 假设如果您在dockerfile中做了任何更改,那么它将在新鲜的图像上应用所有的dockerfile步骤并创build新的图像。 但提交使用相同的图像。

我的观点是,我们必须使用dockerfile来创build我们想要的所有图像,但是如果我们从提交创build图像,那么我们必须logging所有可能需要的变化,如果我们要创build新的图像,我们可以说dockerfile是图像的文档。

优点是,即使你没有一个共享的映像registry,你可以推送你的图像,你仍然可以交换所说的图像与“配方”(由Docker docker build使用的Dockerfile ),这只是几KB文字,并可以很容易地传递(轻和小)。

这种说明性的格式确保您将能够重新构build一个相同的图像,并允许重复性的结果。

Docker提交

使用Docker提交命令的方式来创build新的图像是容易出错的,每次需要记住和更新图像以进行小的更改和提交。

Dockerfile

  • Dockerfile提供了在构build过程中执行一系列指令的自动化步骤(请参考docker build命令),以创build最终的图像以及图像的提交。

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

  • Dockerfile可以与其他人共享,也可以被其他人轻松更新。 它可以很容易地根据需要轻松改变图像,如安全强化,添加或更新用户的详细信息等。