You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

最新Docker Engine中,是否所有Dockerfile指令都会创建镜像层?

Dockerfile指令分层的实际行为(最新Docker Engine)

在当前主流的Docker版本(20.10+,默认启用BuildKit构建引擎)中,镜像分层的实际逻辑如下:

  • 会创建可持久化镜像层的指令:只有ADD、COPY、RUN这三类指令会生成独立的文件系统层,这些层会被包含在最终镜像中,直接影响镜像的总大小。这类层对应文件系统的实际变更(比如复制文件、执行命令生成的文件),并且可以被构建缓存复用。

  • 仅修改元数据、不增加镜像大小的指令:FROM、WORKDIR、ENV、EXPOSE、CMD、ENTRYPOINT、LABEL、ARG等指令,不会创建新的文件系统层。它们只是修改镜像的元数据配置(比如设置工作目录、环境变量、启动命令等),这些元数据会被存储在镜像的配置信息中,执行过程中生成的是中间状态,但不会作为独立层保留,也不会增加最终镜像的大小。

关于你遇到的文档差异:早期Docker版本(未启用BuildKit时),部分元数据指令可能会被处理为中间层,但BuildKit构建引擎优化了分层逻辑,只保留真正涉及文件系统变更的层,这也是当前官方最佳实践文档强调"仅ADD/COPY/RUN创建层"的原因。

内容的提问来源于stack exchange,提问作者Kiran Hegde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:49:50