Dockerfile 发布说明

本页面包含关于 Dockerfile 参考 中的新特性、改进、已知问题和 bug 修复的信息。

有关用法,请参阅Dockerfile 前端语法页面。

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

1.14.0

2025-02-19

此版本的完整发布说明可在 GitHub 上查看

# syntax=docker/dockerfile:1.14.0
  • COPY --chmod 现在允许非八进制值。此功能以前在 labs 通道中,现已在主版本中提供。 moby/buildkit#5734
  • 修复了基础镜像设置 OSVersion 平台属性时的处理问题。 moby/buildkit#5714
  • 修复了命名上下文元数据即使当前构建配置无法访问也能被解析,从而导致构建错误的问题。 moby/buildkit#5688

1.14.0 (labs)

2025-02-19

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

此版本的完整发布说明可在 GitHub 上查看

# syntax=docker.io/docker/dockerfile-upstream:1.14.0-labs

1.13.0

2025-01-20

此版本的完整发布说明可在 GitHub 上查看

# syntax=docker/dockerfile:1.13.0
  • 新增 TARGETOSVERSIONBUILDOSVERSION 内置构建参数,适用于 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 (labs)

2025-01-20

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

此版本的完整发布说明可在 GitHub 上找到。

# syntax=docker.io/docker/dockerfile-upstream:1.13.0-labs

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
  • 修复在使用 ONBUILD 指令时,同一 Dockerfile 中继承阶段出现的回归问题。moby/buildkit#5490

1.11.0

2024-10-30

此版本的完整发布说明可在 GitHub 上找到。

# syntax=docker/dockerfile:1.11.0

1.11.0 (labs)

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

1.10.0

2024-09-10

此版本的完整发布说明可在 GitHub 上找到。

# syntax=docker/dockerfile:1.10.0

1.9.0

2024-07-11

此版本的完整发布说明可在 GitHub 上找到。

# syntax=docker/dockerfile:1.9.0
  • 添加新的验证规则
    • SecretsUsedInArgOrEnv
    • InvalidDefaultArgInFrom
    • RedundantTargetPlatform
    • CopyIgnoredFile(实验性)
    • 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

Bug 修复和增强功能

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

实验室功能

# syntax=docker/dockerfile:1.7-labs

1.6.0

2023-06-13

新增

以下功能已从实验室通道升级到稳定版

Bug 修复和增强功能

1.5.2

2023-02-14

Bug 修复和增强功能

  • 修复了从缺少分支名称但包含子目录的 Git 引用进行构建的问题。
  • 版本中现在包含 386 平台镜像。

1.5.1

2023-01-18

Bug 修复和增强功能

  • 修复了多平台构建中出现警告情况时可能发生的 panic 问题。

1.5.0 (labs)

2023-01-10

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

新增

  • ADD 命令现在支持--checksum 标志,用于验证远程 URL 内容的完整性。

1.5.0

2023-01-10

新增

Bug 修复和增强功能

  • 命名上下文现在支持 oci-layout:// 协议,用于包含来自本地 OCI 布局结构的镜像。
  • Dockerfile 现在支持二级请求,用于列出所有构建目标或打印特定构建目标的接受参数大纲。
  • Dockerfile 的 #syntax 指令用于重定向到外部前端镜像,现在该指令也可以通过 // 注释或 JSON 进行设置。文件还可以包含 shebang header(Shebang 头)。
  • 命名上下文现在可以使用空的 scratch 镜像进行初始化。
  • 命名上下文现在可以使用 SSH Git URL 进行初始化。
  • 修复了导入 Schema1 镜像时处理 ONBUILD 的问题。

1.4.3

2022-08-23

Bug 修复和增强功能

  • 修复了从 docker-image:// 命名上下文构建镜像时创建时间戳未重置的问题。
  • 修复了加载 docker-image:// 命名上下文时传递 FROM 命令的 --platform 标志的问题。

1.4.2

2022-05-06

Bug 修复和增强功能

  • 修复了从随构建上下文传递的镜像加载某些环境变量的问题。

1.4.1

2022-04-08

Bug 修复和增强功能

  • 修复了当输入是为不同平台构建时,交叉编译情况下命名上下文的解析问题。

1.4.0

2022-03-09

新增

  • COPY --linkADD --link 允许以更高的缓存效率复制文件,并可以在不重建镜像的情况下重新基于镜像。--link 将文件复制到单独的层,然后使用新的 LLB MergeOp 实现将独立的层链接在一起。
  • Heredocs 支持已从实验室通道升级到稳定版。此功能允许编写多行内联脚本和文件。
  • 可以将额外的命名构建上下文传递给构建,以在构建中添加或覆盖阶段或镜像。上下文的源可以是本地源、镜像、Git 或 HTTP URL。
  • BUILDKIT_SANDBOX_HOSTNAME build-arg(构建参数)可用于设置 RUN 步骤的默认主机名。

Bug 修复和增强功能

  • 使用交叉编译阶段时,现在可以在进度输出中看到步骤的目标平台。
  • 修复了 Heredocs 错误地从内容中删除引号的一些情况。

1.3.1

2021-10-04

Bug 修复和增强功能

  • 修复了解析不带值的 "required" mount key(挂载键)的问题。

1.3.0 (labs)

2021-07-16

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

新增

1.3.0

2021-07-16

新增

  • RUN 命令允许使用--network 标志来请求特定类型的网络条件。--network=host 需要允许 network.host 授权。此功能以前仅在实验室通道中可用。

Bug 修复和增强功能

1.2.1 (labs)

2020-12-12

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

Bug 修复和增强功能

  • RUN 命令允许使用--network 标志来请求特定类型的网络条件。--network=host 需要允许 network.host 授权。

1.2.1

2020-12-12

Bug 修复和增强功能

  • 恢复了 "确保 ENTRYPOINT 命令至少有一个参数" 的更改。
  • 优化了在多平台交叉编译构建中处理 COPY 调用的性能。

1.2.0 (labs)

2020-12-03

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

Bug 修复和增强功能

  • Experimental 通道已重命名为 labs

1.2.0

2020-12-03

新增

  • 用于创建 secret、ssh、bind 和 cache mounts 的RUN --mount 语法已移至 mainline 通道。
  • ARG 命令现在支持在一行上定义多个构建参数,类似于 ENV

Bug 修复和增强功能

  • 元数据加载错误现在被视为致命错误处理,以避免错误的构建结果。
  • 允许使用小写 Dockerfile 名称。
  • ADD 命令中的 --chown 标志现在允许参数展开。
  • ENTRYPOINT 需要至少一个参数,以避免创建损坏的镜像。

1.1.7

2020-04-18

Bug 修复和增强功能

  • FrontendInputs 转发到网关。

1.1.2 (labs)

2019-07-31

重要

labs 通道提供了访问稳定通道中尚未提供的实验性 Dockerfile 功能的权限。

Bug 修复和增强功能

1.1.2

2019-07-31

Bug 修复和增强功能

  • 修复了使用正确用户创建工作目录的问题,且不重置自定义所有权。
  • 修复了处理也用作 ENV 的空构建参数的问题。
  • 检测循环依赖。

1.1.0

2019-04-27

新增

  • ADD/COPY 命令现在支持基于 llb.FileOp 的实现,并且如果内置文件操作支持可用,则不需要 helper image(辅助镜像)。
  • COPY 命令的 --chown 标志现在支持变量展开。

Bug 修复和增强功能

  • 为了找到构建上下文中忽略的文件,Dockerfile 前端会首先查找文件 <path/to/Dockerfile>.dockerignore,如果未找到,则会从构建上下文的根目录查找 .dockerignore 文件。这使得包含多个 Dockerfile 的项目可以使用不同的 .dockerignore 定义。
页面选项