我们可以创建Docker镜像,并且无需Dockerfile即可将它们推送到Hub。为什么有一个Dockerfile很有用?它的优点是什么? Dockerfile创建是一个耗费时间很长的过程,只能由人工制作。 我想知道基于基础图像,已提交图像和基于Dockerfile的图像之间的主要区别是什么。
答案 0 :(得分:4)
Dockerfile
用于通过在docker镜像上指定我们想要的所有步骤来实现工作自动化。
Dockerfile是一个包含用户所有命令的文本文档 可以调用命令行来组合图像。使用docker 构建用户可以创建执行多个的自动构建 命令行指令连续。
是的,我们可以创建Docker镜像,但每当我们想要进行任何更改时,您必须手动更改并测试并推送它。
或者如果您将Dockerfile与dockerhub一起使用,那么它将自动重建并在每次修改时进行更改,如果出现错误,则重建将失败。
Dockerfile的优点
Dockerfile与dockerhub的优势
Github
或Bitbucket
已提交映像与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可以与他人共享,也可以由其他人轻松更新。它 允许根据需要轻松更改图像 例如安全加固,添加或更新用户详细信息等。