Dockerfile 的优点

2023-11-22

我们可以创建 Docker 映像并将它们全部推送到 Hub,而无需 Dockerfile。 Dockerfile 为什么有用?它有什么优点呢? Dockerfile 的创建是一个非常耗时的过程,并且只能由人来完成。 我想知道基于基础镜像的提交镜像和基于 Dockerfile 的镜像之间的主要区别是什么。


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

Dockerfile 是一个文本文档,其中包含用户的所有命令 可以在命令行上调用来组装图像。使用码头工人 构建用户可以创建一个执行多个的自动构建 连续的命令行指令。

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

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

Dockerfile 的优点

  • Dockerfile 是 Docker 镜像的自动化脚本
  • 当您想在不同操作系统风格上测试相同的设置时,手动创建映像将变得复杂,那么您必须为所有风格创建图像,但通过 dockerfile 中的小更改,您可以为不同风格创建图像
  • 它具有简单的图像语法,并自动执行许多更改,而手动执行则需要更多时间。
  • Dockerfile 有系统的步骤,其他人可以轻松理解,并且很容易知道基础镜像中的具体配置发生了哪些变化。

Dockerfile 与 dockerhub 的优势

  • Docker Hub 为 Dockerfile 提供私有存储库。
  • Dockerfile 可以在团队和组织之间共享。
  • 自动构建镜像
  • 附加到存储库的 Webhook,允许您在将图像或更新的图像推送到存储库时触发事件
  • 我们可以把 Dockerfile 放在Github or 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 <[email protected]>")
  -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 建议使用 dockerfilesee here或者我们可以说提交是 docker 的版本控制或镜像的备份。

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

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

基于 Dockerfile 的镜像:

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

我的观点是,我们必须使用 dockerfile,它包含我们想要在映像上执行的所有步骤,但是如果我们从提交创建映像,那么我们必须记录我们所做的所有更改,如果我们想要创建新映像,我们可以说dockerfile是镜像的文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dockerfile 的优点 的相关文章

随机推荐

  • 外部硬盘上的 MySQL 表

    我有大量文本数据需要导入MySQL 我在 MacBook 上执行此操作 但没有足够的空间 因此我想将其存储在外部硬盘驱动器中 目前我并不真正关心速度 这只是为了测试 最好的方法是什么 在外部硬盘上安装 MySQL 这在 Mac 上可行吗 在
  • 动态设置局部变量[重复]

    这个问题在这里已经有答案了 如何在Python中动态设置局部变量 变量名是动态的 与已发布的其他答案相反 您无法修改locals 直接并期望它能起作用 gt gt gt def foo lcl locals lcl xyz 42 print
  • UserPrincipal.FindByIdentity() 始终返回 null

    我正在使用 LdapAuthentication 将用户登录到 Active Directory 我想找到该用户所属的所有组 我正在使用以下代码 string adPath LDAP OU HR Controlled Users OU Al
  • 用 Perl 读取精美的文件

    我正在寻找在 Perl 中读取文件的有效方法 并发现了这一非常有趣的行 my text do local ARGV file lt gt 我的问题是 这到底是如何运作的 通常在读取您设置的文件时 undef 但我不明白这是如何做到的 事实证
  • 通过收集多列来整理数据集? [复制]

    这个问题在这里已经有答案了 我想通过这样操作数据来整理数据集 age gender education previous comp exp tutorial time qID 1 time taken 1 qID 2 time taken
  • 如何使用 Python 在 NLTK 中使用斯坦福解析器

    是否可以在 NLTK 中使用斯坦福解析器 我不是在谈论斯坦福 POS 请注意 此答案适用于 NLTK v 3 0 而不适用于更新的版本 当然 请在 Python 中尝试以下操作 import os from nltk parse impor
  • ffmpeg命令组合音频和图像

    我正在努力实现一些我之前认为应该是一项简单任务的事情 是否有一个 ffmpeg 命令可以执行以下操作 将 audio wav 文件转换为视频 将大约 100 张图片 img d png 添加到视频中 以便它们 自动 拉伸以填充视频的整个长度
  • 如何使用现有的 for 循环在 Liquid 模板中进行 n.times 循环

    在 ruby 中我可以做 n times do 是否可以在 Liquid 标记中做到这一点 我当前的循环是 对于 site posts 中的视频 我的目标是运行此循环 2 次 目前有 4 个对象将通过循环调用 但我想要 8 个 我希望这一点
  • 将 .NET 中的 DateTime 对象格式化为 Objective-C 的 NSDate

    我正在使用一个 API 它将 NET DateTime 对象返回到我的 iOS 应用程序中 我对发生的事情有点困惑 DateTime 在离开 API 时看起来很好 但是当它进入时 它会通过 JSON 并以字符串形式出现 如下所示 Date
  • 从 JavaScript 打开本机地图应用程序,而不依赖经度和纬度坐标

    我正在寻找一种从phonegap 包装的JavaScript 应用程序打开应用程序的本机地图应用程序的方法 到目前为止 我的研究表明 对于 Android 我必须使用以下格式的链接 a href Geolocation Test a 这是有
  • 在 vim 中将 :Wq 重新映射为 :wq

    很多时候 当我想在 vim 中保存文件并立即退出时 我不小心输入了 Wq 而不是 wq Vim 自然地给了我这个错误 E492 Not an editor command Wq 我想知道是否可以将 Wq 重新映射到 wq 您可以创建一个简单
  • 如何将 CSS 下拉菜单居中 [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我需要一些帮助 我有一个 CSS 下拉菜单 但我希望标题居中 这样在所有屏幕尺寸上它都会位于中间 因为目前它卡在左侧 http jsfiddle net y4vDC 任何帮助将不胜感激 下
  • 如何将指向成员函数的指针传递给 C 函数? [复制]

    这个问题在这里已经有答案了 可能的重复 使用 C 类成员函数作为 C 回调函数 我正在使用 C 库 winpcap 编写一个面向对象的库 我需要传递网络数据包到达时调用的回调函数作为函数指针 我想将成员函数指针传递给 winpcap 以保持
  • React Router:查询参数匹配?

    根据已接受的答案这个问题 React Router 4 不再匹配查询参数 如果我从与我的其中一个匹配的 URL 访问
  • .Net 中 stackalloc 的缓冲区溢出保护

    来自 stackalloc 的 C 参考 使用 stackalloc 会自动启用公共语言运行时 CLR 中的缓冲区溢出检测功能 如果检测到缓冲区溢出 则会尽快终止进程 以最大程度地减少执行恶意代码的机会 具体来说 NET实现了什么样的保护机
  • 对(十六进制)颜色进行排序以匹配彩虹

    我有一个以十六进制表示的颜色列表 我需要对它们进行排序以匹配彩虹中颜色的顺序 我可以硬编码排序顺序 但我觉得有一种更干净的方法 下面是一个函数 给定十六进制 RGB 颜色规范 返回其 HSV 颜色 import colorsys def g
  • 如何计算某个日期范围内有多少晚?

    我需要根据入住和退房日期计算住宿天数 入住酒店 最好的方法是什么 即 如果我有 Checkin 12 11 2009 15 00 hs Checkout 14 11 2009 12 00 hs Doing Checkout Checkin
  • 如何使 ON DELETE CASCADE 在 sqlite 3.7.4 中工作?

    我检查了几次功能列表 似乎级联应该可以工作 当我执行这个 python 脚本时 usr bin env python3 import sqlite3 print sqlite3 sqlite version con sqlite3 conn
  • 是否可以检测 ACTION_SEND Intent 是否成功?

    我有一个简单的 Android 应用程序 其代码如下 来自安卓文档 Intent sendIntent new Intent sendIntent setAction Intent ACTION SEND sendIntent putExt
  • Dockerfile 的优点

    我们可以创建 Docker 映像并将它们全部推送到 Hub 而无需 Dockerfile Dockerfile 为什么有用 它有什么优点呢 Dockerfile 的创建是一个非常耗时的过程 并且只能由人来完成 我想知道基于基础镜像的提交镜像