docker buildx create
| 描述 | 创建新的构建器实例 |
|---|---|
| 用法 | docker buildx create [OPTIONS] [CONTEXT|ENDPOINT] |
描述
`create` 命令创建一个新的构建器实例,指向一个 Docker 上下文或端点,其中上下文是 `docker context ls` 中的上下文名称,端点是 Docker socket 的地址(例如 `DOCKER_HOST` 值)。
默认情况下,当前 Docker 配置用于确定上下文/端点值。
构建器实例是独立的构建环境。所有 Docker 上下文也会获得默认构建器实例。
选项
| 选项 | 默认值 | 描述 |
|---|---|---|
--append | 将节点附加到构建器而不是更改它 | |
--bootstrap | 创建后引导构建器 | |
--buildkitd-config | BuildKit 守护进程配置文件 | |
--buildkitd-flags | BuildKit 守护进程标志 | |
--driver | 要使用的驱动程序(可用:`docker-container`、`kubernetes`、`remote`) | |
--driver-opt | 驱动程序选项 | |
--leave | 从构建器中删除节点而不是更改它 | |
--name | 构建器实例名称 | |
--node | 使用给定名称创建/修改节点 | |
--platform | 当前节点的固定平台 | |
--use | 设置当前 builder 实例 |
示例
将新节点附加到现有构建器(--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,可以是 bridge、cni、host 之一。
--buildkitd-flags '--oci-worker-net bridge'注意网络模式 "bridge" 自 BuildKit v0.13 起受支持,并将成为下一个 v0.14 版本的默认模式。
设置要使用的构建器驱动程序(--driver)
--driver DRIVER设置要使用的构建器驱动程序。驱动程序是 BuildKit 后端的配置。Buildx 支持以下驱动程序:
docker(默认)docker-containerkubernetesremote
有关构建驱动程序的更多信息,请参阅此处。
docker 驱动程序
使用内置于 Docker 守护程序中的构建器。使用此驱动程序时,buildx build 默认隐含 --load 标志。但是,目前不支持构建多平台镜像或导出缓存。
docker-container 驱动程序
使用通过 Docker 启动的 BuildKit 容器。使用此驱动程序,支持构建多平台镜像和导出缓存。
与 `docker` 驱动程序不同,构建的镜像不会自动出现在 `docker images` 中,需要使用 `build --load` 才能实现这一点。
kubernetes 驱动程序
使用 Kubernetes Pod。通过此驱动程序,您可以启动具有已定义 BuildKit 容器镜像的 Pod 来构建您的镜像。
与 `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 标志设置节点支持的平台。它需要一个逗号分隔的平台列表,格式为 OS/architecture/variant。节点也会自动检测其支持的平台,但手动值优先于检测到的值,并且可以在多个节点支持为同一平台构建时使用。
$ docker buildx create --platform linux/amd64
$ docker buildx create --platform linux/arm64,linux/arm/v7
自动切换到新创建的构建器(--use)
--use 标志自动将当前构建器切换到新创建的构建器。相当于运行 docker buildx use $(docker buildx create ...)。