【问题标题】:Dockerfile vs create image from containerDockerfile vs 从容器创建镜像
【发布时间】:2026-01-21 03:00:02
【问题描述】:

使用 Dockerfile 创建映像与从容器创建映像之间有什么区别吗? (例如,从与 Dockerfile 相同的基础运行容器,将 istaller 转移到容器,从命令行运行它们,然后从容器创建映像)。

至少我发现从 Windows Base docker 容器安装 VC Runtime 不起作用:(

【问题讨论】:

    标签: windows docker server devops


    【解决方案1】:

    如果您使用 Dockerfile 创建映像,通过从源代码管理中检出映像、更新基础映像上的标记或 docker pull更新映像的新版本并重新运行来更新映像几乎是微不足道的docker build.

    如果您通过运行 docker commit 创建映像,并且在一年后发现基础 Linux 发行版中存在严重的安全漏洞,您需要立即停止使用它,您需要记住一年前你做了什么来构建图像,以及你重复它们的确切步骤,你最好希望你再次以完全相同的方式进行操作。哦,如果你在一个文本文件中写下你启动FROM 的基本映像,你必须在COPY 中写入哪些文件,然后在RUN 中写下哪些命令来设置映像中的应用程序。 ..

    简而言之,编写 Dockerfile,将其提交到源代码管理,然后运行 ​​docker build 几乎总是比运行 docker commit 更好的做法。您可以设置一个持续集成系统,以便在源代码更改时重建映像;当存在该安全漏洞时,将FROM 行添加到更新的基础映像并重建是微不足道的。

    【讨论】:

    • 此外,Dockerfile 不仅需要更改文件系统,还可能会更改,例如ENVENTRYPOINT
    • 谢谢!那么这两种情况的运行时行为是否相同?例如如果我在容器内或通过 Dockerfile 运行某些命令,两种情况下的输出会相同吗?