自定义 Dockerfile 语法
Dockerfile 前端
BuildKit 支持从容器镜像动态加载前端。要使用
外部 Dockerfile 前端,则 Dockerfile 的第一行需要设置指向要使用的特定镜像的语法
指令:
# syntax=[remote image reference]
例如:
# syntax=docker/dockerfile:1
# syntax=docker.io/docker/dockerfile:1
# syntax=example.com/user/repo:tag@sha256:abcdef...
您还可以使用预定义的 build 参数来设置
frontend image 参考:BUILDKIT_SYNTAX
$ docker build --build-arg BUILDKIT_SYNTAX=docker/dockerfile:1 .
这定义了用于构建 Dockerfile 文件。BuildKit 后端允许无缝使用外部 作为 Docker 镜像分发并在 容器沙箱环境。
自定义 Dockerfile 实现允许您:
- 自动获取错误修复,而无需更新 Docker 守护程序
- 确保所有用户都使用相同的实现来构建 Dockerfile
- 使用最新功能,而无需更新 Docker 守护程序
- 在将新功能或第三方功能集成到 Docker 守护程序之前,请先试用它们
- 使用替代构建定义,或创建自己的构建定义
- 使用自定义功能构建您自己的 Dockerfile 前端
注意
BuildKit 附带了一个内置的 Dockerfile 前端,但建议使用 使用外部镜像以确保所有用户在 构建器并自动获取错误修复,而无需等待新的 BuildKit 或 Docker Engine 的版本。
官方发布
Docker 分发可用于构建的镜像的正式版本
Docker Hub 上存储库下的 Dockerfile。有两个
发布新镜像的通道:和 .docker/dockerfile
stable
labs
稳定通道
该通道遵循语义版本控制。
例如:stable
docker/dockerfile:1
- 使用最新的次要版本和补丁保持更新 释放。1.x.x
docker/dockerfile:1.2
- 使用最新的补丁版本保持更新, 并在版本发布后停止接收更新。1.2.x
1.3.0
docker/dockerfile:1.2.1
- immutable:永不更新。
我们建议使用 ,它始终指向最新的
版本 1 语法的稳定版本,并同时接收 “minor” 和 “patch”
版本 1 发布周期的更新。BuildKit 会自动检查
更新语法,确保您使用的是
最新版本。docker/dockerfile:1
如果使用特定版本(例如 或 ),则 Dockerfile 需要
以继续接收错误修复和新功能。老
Dockerfile 的版本仍然与新版本的
建筑工人。1.2
1.2.1
Labs 频道
该频道提供对尚不可用的 Dockerfile 功能的早期访问
在频道中可用。 同时发布镜像
作为稳定版本,并遵循相同的版本模式,但使用后缀,例如:labs
stable
labs
-labs
docker/dockerfile:labs
- 频道上的最新版本。labs
docker/dockerfile:1-labs
- 与 相同,带有实验性 已启用功能。dockerfile:1
docker/dockerfile:1.2-labs
- 与 相同,带有实验性 已启用功能。dockerfile:1.2
docker/dockerfile:1.2.1-labs
- immutable:永不更新。与 相同,但启用了实验性功能。dockerfile:1.2.1
选择最适合您需求的渠道。如果您想从
新功能,请使用频道。频道中的图片包含
频道中的所有功能,以及抢先体验功能。
通道中的稳定功能遵循语义版本控制,
但抢先体验功能没有,新版本可能不会倒退
相容。固定版本以避免处理重大更改。labs
labs
stable
labs
其他资源
有关功能、主构建和夜间功能的文档
版本,请参阅 GitHub 上 BuildKit 源码仓库中的描述。
有关可用镜像的完整列表,请访问 Docker Hub 上的 docker/dockerfile
存储库。
以及 Docker Hub 上的 docker/dockerfile-upstream
存储库,用于开发版本。labs