windows - Dockerfile vs 从容器创建镜像
问题描述
使用 Dockerfile 创建映像与从容器创建映像之间有什么区别吗?(例如,从与 Dockerfile 相同的基础运行容器,将安装程序转移到容器,从命令行运行它们,然后从容器创建映像)。
至少我发现从 Windows Base docker 容器安装 VC Runtime 不起作用:(
解决方案
如果您使用 Dockerfile 创建映像,那么通过从源代码管理中检出映像、更新基础映像上的标签或获取docker pull
更新版本的映像并重新运行来更新映像几乎是微不足道的docker build
。
如果你通过运行创建镜像,docker commit
一年后发现基础 Linux 发行版中存在严重的安全漏洞,需要立即停止使用它,你需要记住一年前构建镜像是做什么的以及你做了哪些步骤来重复它们,你最好希望你再次以完全相同的方式执行它们。哦,如果你在一个文本文件中写下你开始的基本图像FROM
,你必须进入COPY
的文件,然后你需要什么命令RUN
来设置图像中的应用程序......
简而言之,编写 Dockerfile,将其提交到源代码管理,然后运行docker build
几乎总是比运行docker commit
. 您可以设置一个持续集成系统,以便在源代码更改时重建映像;当存在该安全漏洞时,将FROM
线路碰撞到更新的基础映像并重建是微不足道的。
推荐阅读
- python - Twilio 不工作 - 与数据库 [on pythonanywhere] 连接后
- python - Pandas - 比较两个不同大小的数据帧中的列表
- python - Python - Pandas,将变体长度列表聚合成一个整洁的数据集
- reactjs - Material-ui ButtonBase 显示灰色背景而不是图像
- c++ - 如何构造具有“unique_ptr”作为成员变量的对象的“std::vector”?
- c++ - 初始大小显式设置为 0 的 std::vector
- vue.js - (JEST/VueJS) 不能在模块外使用 import 语句
- html - 用 CSS 适配 HTML 表格
- xcode - XCode 10.1 - Notarise macOS 应用程序,即席,沙盒关闭
- node.js - 将控制台输出重定向到 crontab 中的文件