docker buildx create

描述建立新的構建器例項
用法docker buildx create [OPTIONS] [CONTEXT|ENDPOINT]

描述

`create` 命令建立一個新的構建器例項,指向一個 Docker 上下文或端點,其中上下文是 `docker context ls` 中的上下文名稱,端點是 Docker socket 的地址(例如 `DOCKER_HOST` 值)。

預設情況下,當前 Docker 配置用於確定上下文/端點值。

構建器例項是獨立的構建環境。所有 Docker 上下文也會獲得預設構建器例項。

選項

選項預設值描述
--append將節點附加到構建器而不是更改它
--bootstrap建立後引導構建器
--buildkitd-configBuildKit 守護程序配置檔案
--buildkitd-flagsBuildKit 守護程序標誌
--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,可以是 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 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 ...)