Dockerfile 发行说明
此页面包含有关 Dockerfile 参考中新功能、改进、已知问题和错误修复的信息。
有关用法,请参阅 Dockerfile 前端语法 页面。
1.18.0
2025-09-03此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.18.0- 增加了对 Git URL 的支持,用于远程构建上下文,并且 `ADD` 命令现在允许使用新语法,其中添加了 `?key=value` 格式的查询参数,以更好地控制 Git 克隆过程。此版本中支持的选项有 `ref`、`tag`、`branch`、`checksum` (别名 `commit`)、`subdir`、`keep-git-dir` 和 `submodules`。moby/buildkit#6172 moby/buildkit#6173
- 添加了新的检查规则 `ExposeProtoCasing` 和 `ExposeInvalidFormat`,以改进 `EXPOSE` 命令的使用。moby/buildkit#6135
- 修复了使用命名上下文时,创建时间未从基础镜像正确设置的问题。moby/buildkit#6096
1.17.0
2025-06-17此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.17.0- 添加 `ADD --unpack=bool` 以控制是否解压 URL 路径中的归档文件。默认行为是根据源路径检测解压行为,与之前版本相同。moby/buildkit#5991
- 添加了在解压归档文件时对 `ADD --chown` 的支持,类似于复制普通文件。moby/buildkit#5987
1.16.0
2025-05-22此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.16.0- Git URL 支持 `ADD --checksum`。moby/buildkit#5975
- 允许 heredoc 中包含空格。moby/buildkit#5817
WORKDIR现在支持SOURCE_DATE_EPOCH。moby/buildkit#5960- 保留 WCOW 基础镜像设置的默认 PATH 环境变量。moby/buildkit#5895
1.15.1
2025-03-30此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.15.1- 修复了使用 `--attest type=sbom` 时出现 `no scan targets for linux/arm64/v8` 的问题。moby/buildkit#5941
1.15.0
2025-04-15此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.15.0- 现在,对于无效的目标,构建错误会显示正确可能名称的建议。moby/buildkit#5851
- 修复了 SBOM 证明为 Windows 目标生成错误的问题。moby/buildkit#5837
- 修复了处理大纲请求时递归 `ARG` 导致无限循环的问题。moby/buildkit#5823
- 修复了从 JSON 解析语法指令的问题,如果 JSON 包含字符串以外的数据类型,则会失败。moby/buildkit#5815
- 修复了镜像配置中的平台采用非规范化形式的问题(1.12 版本中的回归)。moby/buildkit#5776
- 修复了使用 WCOW 复制到目标目录时,如果目录不存在则失败的问题。moby/buildkit#5249
1.14.1
2025-03-05此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.14.1- 规范化镜像配置中的平台。moby/buildkit#5776
1.14.0
2025-02-19此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.14.0COPY --chmod现在允许非八进制值。此功能之前在实验室通道中,现在已在主发布版中可用。moby/buildkit#5734- 修复了基础镜像设置 OSVersion 平台属性时的处理问题。moby/buildkit#5714
- 修复了即使命名上下文元数据不可被当前构建配置访问,也可能被解析,从而导致构建错误的问题。moby/buildkit#5688
1.14.0 (实验室)
2025-02-19重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker.io/docker/dockerfile-upstream:1.14.0-labs- 新的 `RUN --device=name,[required]` 标志允许构建请求 CDI 设备可用于构建步骤。需要 BuildKit v0.20.0+ moby/buildkit#4056, moby/buildkit#5738
1.13.0
2025-01-20此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.13.0- 新的 `TARGETOSVERSION`、`BUILDOSVERSION` 内置构建参数可用于 Windows 构建,并且 `TARGETPLATFORM` 值现在还包含 `OSVersion` 值。moby/buildkit#5614
- 允许以字节顺序标记(BOM)开头的文件进行外部前端语法转发。moby/buildkit#5645
- Windows 容器中的默认 `PATH` 已更新,包含 `powershell.exe` 目录。moby/buildkit#5446
- 修复 Dockerfile 指令解析,不允许使用无效语法。moby/buildkit#5646
- 修复了在继承阶段 `ONBUILD` 命令可能运行两次的情况。moby/buildkit#5593
- 修复了 Dockerfile 中子阶段可能缺少命名上下文替换的问题。moby/buildkit#5596
1.13.0 (实验室)
2025-01-20重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker.io/docker/dockerfile-upstream:1.13.0-labs- 修复了对 `COPY --chmod` 的非八进制值的支持。moby/buildkit#5626
1.12.0
2024-11-27此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.12.0- 修复了在镜像配置历史记录行中,多个 `ARG` 指令导致描述不正确的问题。moby/buildkit#5508
1.11.1
2024-11-08此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.11.1- 修复了在同一 Dockerfile 中继承阶段使用 `ONBUILD` 指令时的回归问题。moby/buildkit#5490
1.11.0
2024-10-30此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.11.0ONBUILD指令现在支持引用其他阶段或具有 `from` 的镜像的命令,例如COPY --from或RUN mount=from=...。moby/buildkit#5357SecretsUsedInArgOrEnv构建检查已得到改进,以减少误报。moby/buildkit#5208- 新的
InvalidDefinitionDescription构建检查建议为构建参数和阶段描述格式化注释。这是一项 实验性检查。moby/buildkit#5208, moby/buildkit#5414 - 修复了 `ONBUILD` 指令进度和错误处理的多个问题。moby/buildkit#5397
- 改进了缺少标志错误的错误报告。moby/buildkit#5369
- 增强了作为环境变量挂载的秘密值的进度输出。moby/buildkit#5336
- 添加了内置构建参数
TARGETSTAGE,以公开当前构建的(最终)目标阶段的名称。moby/buildkit#5431
1.11.0 (实验室)
重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
COPY --chmod现在支持非八进制值。moby/buildkit#5380
1.10.0
2024-09-10此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.10.0- 构建秘密现在可以使用
env=VARIABLE选项作为环境变量挂载。moby/buildkit#5215 # check指令现在允许新的实验性属性,用于启用实验性验证规则,例如CopyIgnoredFile。moby/buildkit#5213- 改进了对变量替换不支持的修饰符的验证。moby/buildkit#5146
ADD和COPY指令现在支持对--chmod选项值进行构建参数的变量插值。moby/buildkit#5151- 改进了
COPY和ADD指令的--chmod选项的验证。moby/buildkit#5148 - 修复了挂载的大小和目标属性缺少补全的问题。moby/buildkit#5245
- OCI 注解现在已设置为 Dockerfile 前端发布镜像。moby/buildkit#5197
1.9.0
2024-07-11此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.9.0- 添加新验证规则
SecretsUsedInArgOrEnvInvalidDefaultArgInFromRedundantTargetPlatformCopyIgnoredFile(实验性)FromPlatformFlagConstDisallowed
- 在使用大型 Dockerfile 时,性能得到了多项改进。moby/buildkit#5067, moby/buildkit#5029
- 修复了构建未定义阶段的 Dockerfile 时可能发生的 panic。moby/buildkit#5150
- 修复了不正确的 JSON 解析问题,该问题可能导致一些不正确的 JSON 值在不产生错误的情况下通过。moby/buildkit#5107
- 修复了 `COPY --link` 目标路径为 `.` 时可能失败的回归问题。moby/buildkit#5080
- 修复了将 `ADD --checksum` 与 Git URL 结合使用时的验证问题。moby/buildkit#5085
1.8.1
2024-06-18此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.8.1错误修复和增强
- 修复了变量展开时空字符串的处理问题。moby/buildkit#5052
- 改进了构建警告的格式。moby/buildkit#5037, moby/buildkit#5045, moby/buildkit#5046
- 修复了多阶段构建中 `UndeclaredVariable` 警告可能产生不正确输出的问题。moby/buildkit#5048
1.8.0
2024-06-11此版本的完整发布说明可在 GitHub 上查阅。
# syntax=docker/dockerfile:1.8.0- 新增了许多验证规则,用于验证您的 Dockerfile 是否遵循最佳实践。这些规则在构建期间进行验证,并且可以使用新的 `check` 前端方法仅触发验证,而无需完成整个构建。
- 新的指令 ` #check ` 和构建参数 ` BUILDKIT_DOCKERFILE_CHECK ` 允许您控制构建检查的行为。moby/buildkit#4962
- 现在会验证使用与预期平台不匹配的单一平台基础镜像。moby/buildkit#4924
- 现在可以正确处理全局作用域中 `ARG` 定义扩展的错误。moby/buildkit#4856
ARG默认值的展开现在仅在用户未覆盖它时发生。以前,展开完成后值被忽略,这可能导致意外的展开错误。moby/buildkit#4856- 解析包含许多阶段的巨型 Dockerfile 的性能已得到改进。moby/buildkit#4970
- 修复了一些 Windows 路径处理一致性错误。moby/buildkit#4825
1.7.0
2024-03-06稳定版
# syntax=docker/dockerfile:1.7- 变量扩展现在允许字符串替换和修剪。moby/buildkit#4427, moby/buildkit#4287
- 带有本地源的命名上下文现在可以正确地只传输 Dockerfile 中使用的文件,而不是整个源目录。moby/buildkit#4161
- Dockerfile 现在能更好地验证阶段顺序,如果阶段顺序不正确,则返回带有堆栈跟踪的良好错误。moby/buildkit#4568, moby/buildkit#4567
- 历史提交消息现在包含与 `COPY` 和 `ADD` 一起使用的标志。moby/buildkit#4597
- Git 和 HTTP 源的 `ADD` 命令的进度消息已得到改进。moby/buildkit#4408
实验室
# syntax=docker/dockerfile:1.7-labsCOPY命令新增--parents标志,用于在复制文件时保留父目录结构。moby/buildkit#4598, moby/buildkit#3001, moby/buildkit#4720, moby/buildkit#4728, 文档- 在 `COPY` 和 `ADD` 命令中新增了 ` --exclude ` 标志,用于对复制的文件应用筛选器。moby/buildkit#4561, 文档
1.6.0
2023-06-13新增
- 为`HEALTHCHECK` 指令添加了`--start-interval`标志。
以下功能已从实验室通道升级到稳定版
ADD指令现在可以直接从 Git URL 导入文件ADD指令现在支持--checksum标志,用于验证远程 URL 内容。
错误修复和增强
- 变量替换现在支持不带 `:` 的额外 POSIX 兼容变体。moby/buildkit#3611
- 导出的 Windows 镜像现在包含来自基础镜像的 OSVersion 和 OSFeatures 值。moby/buildkit#3619
- 将 Heredoc 的权限更改为 0644。moby/buildkit#3992
1.5.2
2023-02-14错误修复和增强
- 修复了从缺少分支名称但包含子目录的 Git 引用构建的问题
- 386 平台镜像现在包含在发布版中
1.5.1
2023-01-18错误修复和增强
- 修复了在多平台构建中出现警告条件时可能发生的 panic
1.5.0 (实验室)
2023-01-10重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
新增
ADD命令现在支持--checksum标志,用于验证远程 URL 内容
1.5.0
2023-01-10新增
ADD命令现在可以直接从 Git URL 导入文件
错误修复和增强
- 命名上下文现在支持 `oci-layout://` 协议,用于包含来自本地 OCI 布局结构的镜像
- Dockerfile 现在支持列出所有构建目标或打印特定构建目标接受参数大纲的二次请求
- Dockerfile 的 `#syntax` 指令,用于重定向到外部前端镜像,现在允许通过 `//` 注释或 JSON 来设置该指令。文件还可以包含 shebang 头部
- 命名上下文现在可以使用空 scratch 镜像初始化
- 命名上下文现在可以通过 SSH Git URL 进行初始化
- 修复了导入 Schema1 镜像时 `ONBUILD` 的处理问题
1.4.3
2022-08-23错误修复和增强
- 修复了从 `docker-image://` 命名上下文构建镜像时创建时间未重置的问题
- 修复了加载 `docker-image://` 命名上下文时,`FROM` 命令的 `--platform` 标志传递问题
1.4.2
2022-05-06错误修复和增强
- 修复了从通过构建上下文传递的镜像加载某些环境变量的问题
1.4.1
2022-04-08错误修复和增强
- 修复了跨编译情况下,当输入为不同平台构建时,从输入解析命名上下文的问题
1.4.0
2022-03-09新增
COPY --link和ADD --link允许以更高的缓存效率复制文件,并重新基于镜像而无需重新构建。--link将文件复制到单独的层,然后使用新的 LLB MergeOp 实现将独立的层链接在一起- Heredocs 支持已从实验室通道升级到稳定版。此功能允许编写多行内联脚本和文件
- 可以通过 额外的命名构建上下文 来构建,以添加或覆盖构建中的阶段或镜像。上下文的源可以是本地源、镜像、Git 或 HTTP URL。
BUILDKIT_SANDBOX_HOSTNAME构建参数可用于为 `RUN` 步骤设置默认主机名
错误修复和增强
- 使用交叉编译阶段时,现在在进度输出中显示步骤的目标平台
- 修复了 Heredocs 错误地从内容中删除引号的某些情况
1.3.1
2021-10-04错误修复和增强
- 修复了解析不带值的“required”挂载键的问题
1.3.0 (实验室)
2021-07-16重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
新增
RUN和COPY命令现在支持Here-document 语法,允许编写多行内联脚本和文件
1.3.0
2021-07-16新增
RUN命令允许--network标志用于请求特定类型的网络条件。--network=host需要允许 `network.host` 授权。此功能之前仅在实验室通道中可用。
错误修复和增强
- 带远程 URL 输入的 `ADD` 命令现在能正确处理 ` --chmod ` 标志
RUN --mount标志的值现在支持变量展开,但 `from` 字段除外- 允许
BUILDKIT_MULTI_PLATFORM构建参数强制始终创建多平台镜像,即使它只包含单个平台
1.2.1 (实验室)
2020-12-12重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
错误修复和增强
RUN命令允许--network标志用于请求特定类型的网络条件。--network=host需要允许 `network.host` 授权
1.2.1
2020-12-12错误修复和增强
- 恢复“确保 ENTRYPOINT 命令至少有一个参数”
- 优化多平台交叉编译构建上的 `COPY` 调用处理
1.2.0 (实验室)
2020-12-03重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
错误修复和增强
- 实验性通道已重命名为 _labs_
1.2.0
2020-12-03新增
RUN --mount语法,用于创建 secret、ssh、bind 和 cache 挂载,已移至主通道ARG命令现在支持在同一行定义多个构建参数,类似于ENV
错误修复和增强
- 元数据加载错误现在作为致命错误处理,以避免不正确的构建结果
- 允许小写 Dockerfile 名称
ADD中的--chown标志现在允许参数扩展ENTRYPOINT至少需要一个参数,以避免创建损坏的镜像
1.1.7
2020-04-18错误修复和增强
- 将 `FrontendInputs` 转发到网关
1.1.2 (实验室)
2019-07-31重要提示实验室通道让您可以使用尚未在稳定通道中提供的实验性 Dockerfile 功能。
错误修复和增强
- 允许使用
RUN --security=sandbox|insecure为进程设置安全模式 - 允许为缓存挂载设置 uid/gid
- 避免请求内部链接路径被拉取到构建上下文
- 确保缺失的缓存 ID 默认为目标路径
- 允许使用
BUILDKIT_CACHE_MOUNT_NS构建参数设置缓存挂载的命名空间
1.1.2
2019-07-31错误修复和增强
- 修复了使用正确用户创建工作目录的问题,并且不重置自定义所有权
- 修复了同时用作 `ENV` 的空构建参数的处理
- 检测循环依赖
1.1.0
2019-04-27新增
ADD/COPY命令现在支持基于llb.FileOp的实现,如果内置文件操作支持可用,则无需辅助镜像COPY命令的--chown标志现在支持变量扩展
错误修复和增强
- 为了查找从构建上下文忽略的文件,Dockerfile 前端将首先查找文件 `<path/to/Dockerfile>.dockerignore`,如果未找到,则会从构建上下文的根目录查找 `.dockerignore` 文件。这允许包含多个 Dockerfile 的项目使用不同的 `.dockerignore` 定义