1、docker buildx bake 简介
docker buildx bake
是一个高级的构建命令。每个指定的目标都将作为构建的一部分并行运行。每个目标都生成一个容器映像。目标尽可能并行运行,以最大限度地提高性能。目标也可以直接引用前任来创建顺序管道。
参考文档:https://docs.docker.com/engine/reference/commandline/buildx_bake/
2、docker buildx bake 语法
docker buildx bake [OPTIONS] [TARGET...]
3、docker buildx bake 命令
1)指定一个构建定义文件(-f,--file)
使用-f/--file选项指定要使用的构建定义文件。文件可以是HCL、JSON或Compose文件。如果指定了多个文件,则全部读取,并合并配置。可以传递要生成的目标的名称,只生成特定的目标。下面的例子构建了在docker-bake.dev.hcl文件中定义的db和webapp-release目标:
# docker-bake.dev.hcl group "default" { targets = ["db", "webapp-dev"] } target "webapp-dev" { dockerfile = "Dockerfile.webapp" tags = ["docker.io/username/webapp"] } target "webapp-release" { inherits = ["webapp-dev"] platforms = ["linux/amd64", "linux/arm64"] } target "db" { dockerfile = "Dockerfile.db" tags = ["docker.io/username/db"] }
docker buildx bake -f docker-bake.dev.hcl db webapp-release
2)打印不构建的选项(--print)
在不开始构建的情况下,以JSON格式打印出要构建的目标的结果选项。
docker buildx bake -f docker-bake.hcl --print db { "group": { "default": { "targets": [ "db" ] } }, "target": { "db": { "context": "./", "dockerfile": "Dockerfile", "tags": [ "docker.io/tiborvass/db" ] } } }
3)从命令行覆盖目标配置。模式匹配语法定义在https://golang.org/pkg/path/#Match中。
docker buildx bake --set target.args.mybuildarg=value docker buildx bake --set target.platform=linux/arm64 docker buildx bake --set foo*.args.mybuildarg=value # 覆盖所有以'foo'开头的目标的构建参数 docker buildx bake --set *.platform=linux/arm64 # 覆盖所有目标的平台 docker buildx bake --set foo*.no-cache # 仅对以'foo'开头的目标绕过缓存
可重写字段的完整列表:
- args
- cache-from
- cache-to
- context
- dockerfile
- labels
- no-cache
- no-cache-filter
- output
- platform
- pull
- push
- secrets
- ssh
- tags
- target
4、选项说明
名称, 缩写 | 默认 | 描述 |
--file,-f | 构建定义文件 | |
--load | --set=*.output=type=docker的缩写 | |
--metadata-file | 将构建结果元数据写入文件 | |
--no-cache | 在构建图像时不使用缓存 | |
打印选项而不构建 | ||
--progress | auto | 设置进度输出类型(auto、plain、tty)。使用plain来显示容器输出 |
--pull | 始终尝试提取所有引用的图像 | |
--push | --set=*.output=type=registry的简称 | |
--set | 覆盖目标值(例如,targetpattern.key=value) | |
--builder | 覆盖已配置的构builder实例 |
5、相关命令
命令 | 描述 |
docker buildx bake | 从文件构建 |
docker buildx build | 开始构建 |
docker buildx create | 创建一个新的builder实例 |
docker buildx du | 磁盘使用情况 |
docker buildx imagetools | 在registry中处理镜像的命令 |
docker buildx inspect | 查当前builder实例 |
docker buildx ls | 列出 builder 实现 |
docker buildx prune | 移除构建缓存 |
docker buildx rm | 删除 builder 实现 |
docker buildx stop | 停止 builder 实现 |
docker buildx use | 设置当前 builder 实例 |
docker buildx version | 显示buildx版本信息 |
6、父命令
命令 | 描述 |
Docker Buildx |