Dockerfile的优点

问题描述

Dockerfile 通过指定我们要在docker映像上执行的所有步骤来用于工作自动化。

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

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

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

  • Dockerfile是Docker映像的自动化脚本
  • 当您想在不同操作系统版本上测试相同的设置时,手动映像创建将变得复杂,然后您必须为所有版本创建映像,但是通过在dockerfile中进行少量更改,您可以创建不同版本的映像
  • 它具有简单的图像语法,并且会自动进行许多更改,而手动进行操作会花费更多时间。
  • Dockerfile具有系统的步骤,其他人可以轻松理解,并且很容易知道基本映像中发生了什么确切配置。

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

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

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参见此处,或者我们可以说commit是docker的版本控制或映像的备份。

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

认情况下,在提交映像时,将暂停提交的容器及其进程。这减少了在创建提交过程中遇到数据损坏的可能性。如果不希望出现这种情况,请将“ p”选项设置为false。

它总是使用基础图像来创建新图像。让我们假设,如果您对dockerfile进行了任何更改,那么它将在新映像上应用所有dockerfile步骤并创建新映像。但提交使用相同的图像。

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

解决方法

我们可以创建Docker映像并将所有映像都推送到没有Dockerfile的Hub中。拥有Dockerfile为何有用?它有什么优势?Dockerfile的创建是一个耗费大量时间的过程,只能由人来创建。我想知道基于基础映像,提交的映像和基于Dockerfile的映像之间的主要区别是什么。