docker buildx create

描述创建一个新的生成器实例
用法docker buildx create [OPTIONS] [CONTEXT|ENDPOINT]

描述

创建一个新的构建器实例,指向 Docker 上下文或端点, 其中 context 是来自 docker context ls 的上下文名称,endpoint 是 Docker 套接字的地址(例如 DOCKER_HOST 值)。

默认情况下,当前的 Docker 配置用于确定上下文/端点值。

构建器实例是可调用构建的隔离环境。所有 Docker 上下文也会获得默认的构建器实例。

选项

选项默认描述
--append将节点追加到构建器,而不是更改它
--bootstrap创建后启动构建器
--buildkitd-configBuildKit 守护进程配置文件
--buildkitd-flagsBuildKit 守护进程标志
--driver要使用的驱动 (可用:docker-container, kubernetes, remote)
--driver-opt驱动程序选项
--leave从构建器中移除节点而不是更改它
--name构建器实例名称
--node使用给定名称创建/修改节点
--platform当前节点固定平台
--use设置当前的构建器实例

示例

向现有构建器追加新节点 (--append)

--append 标志将命令的操作更改为向 --name 指定的现有构建器追加新节点。Buildx 将根据其支持的平台为构建选择适当的节点。

$ docker buildx create mycontext1
eager_beaver

$ docker buildx create --name eager_beaver --append mycontext2
eager_beaver

为 BuildKit 守护进程指定配置文件 (--buildkitd-config)

--buildkitd-config FILE

指定 BuildKit 守护进程要使用的配置文件。该 配置可以被 --buildkitd-flags覆盖。 参阅 BuildKit 守护进程配置文件示例

如果未指定配置文件,Buildx 默认会在以下位置查找:

  • $BUILDX_CONFIG/buildkitd.default.toml
  • $DOCKER_CONFIG/buildx/buildkitd.default.toml
  • ~/.docker/buildx/buildkitd.default.toml

请注意,如果您创建了一个 docker-container 构建器,并且在 buildkitd.toml 配置中指定了注册表的证书,这些文件将被复制到容器中的 /etc/buildkit/certs 下,并且配置将被更新以反映这一点。

指定 BuildKit 守护进程的选项 (--buildkitd-flags)

--buildkitd-flags FLAGS

在启动 BuildKit 守护进程时添加标志。这些标志优先于由 --buildkitd-config 指定的 配置文件。请参阅 buildkitd --help 以获取可用的标志。

--buildkitd-flags '--debug --debugaddr 0.0.0.0:6666'

BuildKit 守护进程网络模式

您可以使用由 --buildkitd-config 指定的配置文件,通过此处的 worker.oci.networkMode 选项或 --oci-worker-net 标志来指定 BuildKit 守护进程的网络模式。默认值为 auto,可以是 bridgecnihost 中的一个:

--buildkitd-flags '--oci-worker-net bridge'

注意

网络模式 "bridge" 自 BuildKit v0.13 起支持,并将在下一个 v0.14 版本中成为默认值。

设置要使用的构建器驱动程序 (--driver)

--driver DRIVER

设置要使用的构建器驱动。驱动是 BuildKit 后端的配置。Buildx 支持以下驱动:

  • docker (默认)
  • docker-container
  • kubernetes
  • remote

有关构建驱动程序的更多信息,请参阅 此处

docker 驱动

使用 Docker 守护进程中内置的构建器。使用此驱动程序,buildx build 默认隐含 --load 标志。但是,目前不支持构建多平台镜像或导出缓存。

docker-container 驱动

使用通过 Docker 生成的 BuildKit 容器。使用此驱动程序,支持构建多平台镜像和导出缓存。

docker 驱动不同,构建的镜像不会自动出现在 docker images 中,需要使用 build --load 来实现。

kubernetes 驱动

使用 Kubernetes pods。通过此驱动,您可以启动具有指定 BuildKit 容器镜像的 pods 来构建您的镜像。

docker 驱动不同,构建的镜像不会自动出现在 docker images 中,需要使用 build --load 来实现。

remote 驱动

通过任意连接使用远程 BuildKit 守护进程实例。使用此驱动程序,您需要手动创建和管理 buildkit 实例,并配置 buildx 指向该实例。

docker 驱动不同,构建的镜像不会自动出现在 docker images 中,需要使用 build --load 来实现。

设置额外的驱动程序特定选项 (--driver-opt)

--driver-opt OPTIONS

传递额外的驱动程序特定选项。 有关可用驱动程序选项的信息,请参阅特定驱动程序的详细文档:

从构建器中移除节点 (--leave)

--leave 标志将命令的操作更改为从构建器中移除节点。构建器需要使用 --name 指定,而被移除的节点则通过 --node 设置。

$ docker buildx create --name mybuilder --node mybuilder0 --leave

指定构建器的名称 (--name)

--name NAME

--name 标志指定要创建或修改的构建器的名称。 如果未指定,将自动生成一个。

指定节点的名称 (--node)

--node NODE

--node 标志指定要创建或修改的节点名称。如果您不指定名称,节点名称默认为其所属构建器的名称,并带有索引号后缀。

设置节点支持的平台 (--platform)

--platform PLATFORMS

--platform 标志设置该节点支持的平台。它期望一个以逗号分隔的平台列表,格式为“操作系统/架构/变体”。该节点也会自动检测其支持的平台,但手动设置的值优先于检测到的值,并且可以在多个节点支持为同一平台构建时使用。

$ docker buildx create --platform linux/amd64
$ docker buildx create --platform linux/arm64,linux/arm/v7

自动切换到新创建的构建器 (--use)

--use 标志会自动将当前构建器切换到新创建的构建器。这等同于运行 docker buildx use $(docker buildx create ...)