docker buildx构建
描述
开始构建
用法
$ docker buildx build [OPTIONS] PATH | URL | -
扩展说明
该buildx build
命令使用BuildKit开始构建。此命令与命令的UI相似,docker build
并带有相同的标志和参数。
有关大多数这些标志的docker build
文档,请参阅文档。在这里,我们将记录新标志的子集。
有关此命令的示例用法,请参阅下面的示例部分。
选项
名称,简写 | 默认 | 描述 |
--add-host |
添加自定义主机到IP的映射(host:ip) | |
--allow |
允许额外的特权,例如network.host,security.insecure | |
--build-arg |
设置构建时变量 | |
--cache-from |
外部缓存源(例如,用户/应用程序:缓存,类型=本地,src =路径/目标/目录) | |
--cache-to |
缓存导出目标(例如,用户/应用程序:缓存,类型=本地,目标=路径/目标/目录) | |
--cgroup-parent |
容器的可选父cgroup | |
--compress |
使用gzip压缩构建上下文 | |
--cpu-period |
限制CPU CFS(完全公平的调度程序)期限 | |
--cpu-quota |
限制CPU CFS(完全公平的调度程序)配额 | |
--cpu-shares , -c |
CPU份额(相对重量) | |
--cpuset-cpus |
允许执行的CPU(0-3,0,1) | |
--cpuset-mems |
允许执行的MEM(0-3,0,1) | |
--file , -f |
Dockerfile的名称(默认为“ PATH / Dockerfile”) | |
--force-rm |
始终取出中间容器 | |
--iidfile |
将图像ID写入文件 | |
--isolation |
集装箱隔离技术 | |
--label |
设置图像的元数据 | |
--load |
--output = type = docker的简写 | |
--memory , -m |
内存限制 | |
--memory-swap |
交换限制等于内存加交换:“-1”以启用无限交换 | |
--network |
在构建期间为RUN指令设置网络模式 | |
--no-cache |
构建映像时不要使用缓存 | |
--output , -o |
输出目的地(格式:type = local,dest = path) | |
--platform |
设置目标平台 | |
--progress |
auto |
设置进度输出的类型(自动,普通,tty)。使用普通显示容器输出 |
--pull |
始终尝试提取图像的较新版本 | |
--push |
--output = type = registry的简写 | |
--quiet , -q |
禁止生成输出并在成功时打印图像ID | |
--rm |
true |
成功构建后删除中间容器 |
--secret |
公开文件的秘密文件:id = mysecret,src = / local / secret | |
--security-opt |
安全选项 | |
--shm-size |
/ dev / shm的大小 | |
--squash |
将新构建的层压缩为一个新层 | |
--ssh |
SSH代理套接字或用于公开的密钥(格式:default | <id> [= <socket> | <key> [,<key>]]) | |
--tag , -t |
名称以及“ name:tag”格式的标签(可选) | |
--target |
设置要构建的目标构建阶段。 | |
--ulimit |
Ulimit选项 | |
--builder |
覆盖已配置的构建器实例 |
例子
设置构建的目标平台(--platform)
--platform=value[,value]
设置构建的目标平台。FROM
Dockerfile中所有不带自己--platform
标志的命令都会提取该平台的基础映像,并且该值也将成为生成映像的平台。默认值为buildkit守护程序的当前平台。
当docker-container
与driver一起使用时buildx
,此标志可以接受多个值作为输入,并用逗号分隔。具有多个值的结果将针对所有指定平台构建,并合并在一起成为一个清单清单。
如果Dockerfile
需要调用RUN
命令,那么构建器需要对指定平台的运行时支持。在干净的安装程序中,您只能RUN
为您的系统体系结构执行命令。如果您的内核支持binfmt_misc
辅助体系结构的启动器,则buildx将自动选择它们。Docker桌面版本随附binfmt_misc
针对arm64
和arm
体系结构自动配置的功能。您可以通过运行来查看当前构建器实例支持哪些运行时平台docker buildx inspect --bootstrap
。
在中Dockerfile
,您可以通过TARGETPLATFORM
build参数访问当前平台值
。请参阅docker build
文档
以获取自动平台参数变体的完整说明。
平台说明符的格式在容器化的源代码中定义。
例子
$ docker buildx build --platform=linux/arm64 .
$ docker buildx build --platform=linux/amd64,linux/arm64,linux/arm/v7 .
$ docker buildx build --platform=darwin .
为构建结果设置导出操作(-o,-output)
-o, --output=[PATH,-,type=TYPE[,KEY=VALUE]
设置构建结果的导出操作。在docker build
所有构建中,请先创建一个容器映像并将其导出到docker images
。buildx
使此步骤可配置,从而允许将结果直接导出到客户端,oci图像tarball,注册表等。
带有docker
驱动程序的Buildx当前仅支持本地,tarball导出器和图像导出器。docker-container
驱动程序支持所有出口商。
如果仅将路径指定为值,buildx
则将使用此路径作为目标的本地导出程序。如果值为“-”,buildx
将使用tar
导出器并写入stdout
。
例子
$ docker buildx build -o . .
$ docker buildx build -o outdir .
$ docker buildx build -o - - > out.tar
$ docker buildx build -o type=docker .
$ docker buildx build -o type=docker,dest=- . > myimage.tar
$ docker buildx build -t tonistiigi/foo -o type=registry
支持的导出类型为:
local
在local
出口型的所有结果文件写入到客户端上的目录。新文件将归当前用户所有。在多平台构建中,所有结果将通过其平台放在子目录中。
属性键:
dest
-将在其中写入文件的目标目录
tar
该tar
出口型写入所有结果文件,在客户端上一个压缩包。在多平台构建中,所有结果将通过其平台放入子目录中。
属性键:
dest
-将要写入tarball的目标路径。“-”写入标准输出。
oci
在oci
出口型的效果图或清单列表写为OCI图像布局
客户端压缩包。
属性键:
dest
-将要写入tarball的目标路径。“-”写入标准输出。
docker
在docker
出口型的单平台的结果图像作为写入泊坞窗图像规范
在客户端上压缩包。该出口商创建的Tarball也与OCI兼容。
当前,不能使用docker
导出类型导出多平台图像。多平台映像的最常见用例是直接推送到注册表(请参阅参考资料registry
)。
属性键:
dest
-将要写入tarball的目标路径。如果未指定,则tar将自动加载到当前docker实例。context
-将结果导入到的Docker上下文的名称
image
该image
出口写入构建结果作为图像或清单列表。使用docker
驱动程序时,图像将出现在中docker images
。(可选)可以通过指定属性将图像自动推送到注册表。
属性键:
name
-新图像的名称(引用)。push
-布尔值以自动推送图像。
registry
该registry
出口是一条捷径type=image,push=true
。
将生成结果推送到注册表(--push)
的简写--output=type=registry
。将自动将生成结果推送到注册表。
将单平台构建结果加载到docker images
(--load)
的简写--output=type=docker
。将自动将单平台构建结果加载到docker images
。
使用外部缓存源进行构建(--cache-from)
--cache-from=[NAME|type=TYPE[,KEY=VALUE]]
使用外部缓存源进行构建。支持的类型为registry
和local
。所述registry
源可以从注册表中缓存清单或(特殊)图像构造导入缓存。该local
源可从以前导出的本地文件导入缓存--cache-to
。
如果未指定类型,则registry
导出器将与指定的引用一起使用。
docker
驱动程序当前仅支持从注册表导入构建缓存。
例子
$ docker buildx build --cache-from=user/app:cache .
$ docker buildx build --cache-from=user/app .
$ docker buildx build --cache-from=type=registry,ref=user/app .
$ docker buildx build --cache-from=type=local,src=path/to/cache .
将构建缓存导出到外部缓存目标(--cache-to)
--cache-to=[NAME|type=TYPE[,KEY=VALUE]]
将构建缓存导出到外部缓存目标。支持的类型包括registry
,
local
和inline
。注册表导出将缓存生成到注册表中的缓存清单,本地导出缓存到客户端上的本地目录,然后内联将缓存元数据写入映像配置。
docker
驱动程序当前仅支持将内联缓存元数据导出到映像配置。或者,--build-arg BUILDKIT_INLINE_CACHE=1
可以用来触发内联缓存导出器。
属性键:
mode
-指定与高速缓存一起导出的层数。在最后的构建阶段中,仅在已导出的层上“最小”,在所有阶段中的“最大”导出层。元数据总是在整个构建过程中导出。
例子
$ docker buildx build --cache-to=user/app:cache .
$ docker buildx build --cache-to=type=inline .
$ docker buildx build --cache-to=type=registry,ref=user/app .
$ docker buildx build --cache-to=type=local,dest=path/to/cache .
允许额外的特权(--allow)
--allow=ENTITLEMENT
允许额外的特权。权利清单:
network.host
-允许通过主机网络执行。security.insecure
-允许无沙箱执行。请参阅 相关的Dockerfile扩展。
要启用权利,buildkitd
守护程序还需要允许它们--allow-insecure-entitlement
(请参阅参考资料create --buildkitd-flags
)
例子
$ docker buildx create --use --name insecure-builder --buildkitd-flags '--allow-insecure-entitlement security.insecure'
$ docker buildx build --allow security.insecure .
上级命令
命令 | 描述 |
---|---|
docker buildx | 使用BuildKit进行构建 |
相关命令
命令 | 描述 |
docker buildx烘烤 | 从文件构建 |
docker buildx构建 | 开始构建 |
docker buildx创建 | 创建一个新的构建器实例 |
docker buildx du | 磁盘使用情况 |
docker buildx imagetools | 在注册表中处理图像的命令 |
docker buildx检查 | 检查当前的构建器实例 |
docker buildx ls | 列出构建器实例 |
docker buildx修剪 | 删除构建缓存 |
docker buildx rm | 删除构建器实例 |
docker buildx停止 | 停止构建器实例 |
docker buildx使用 | 设置当前的构建器实例 |
docker buildx版本 | 显示buildx版本信息 |