日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Docker Buildx插件

發(fā)布時間:2023/11/28 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker Buildx插件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Docker Buildx插件

Overview

Docker Buildx是一個CLI插件,它擴展了Docker命令,完全支持Moby BuildKit builder toolkit提供的功能。它提供了與docker build相同的用戶體驗,并提供了許多新功能,如創(chuàng)建作用域生成器實例和針對多個節(jié)點并發(fā)構(gòu)建。

安裝

Docker Buildx包含在Docker19.03中,并與以下Docker Desktop版本捆綁在一起。請注意,必須啟用“實驗特性”選項才能使用Docker Buildx。

Docker Desktop Enterprise version 2.1.0
Docker Desktop Edge version 2.0.4.0 or higher

還可以從Docker buildx存儲庫下載最新的buildx二進制文件。

Build with buildx

To start a new build, run the command docker buildx build .

$ docker buildx build .

[+] Building 8.4s (23/32)

=> …

Buildx使用BuildKit引擎生成,并且不需要DOCKER_BuildKit=1環(huán)境變量來啟動生成。 docker buildx build命令支持docker build可用的功能,包括docker 19.03中的新功能,如輸出配置、內(nèi)聯(lián)構(gòu)建緩存和指定目標(biāo)平臺。此外,Buildx還支持常規(guī)docker構(gòu)建尚不可用的新功能,如構(gòu)建清單列表、分布式緩存和將構(gòu)建結(jié)果導(dǎo)出到OCI映像tarballs。 可以在通過驅(qū)動程序概念公開的不同配置中運行Buildx。目前,Docker支持一個“Docker”驅(qū)動程序,該驅(qū)動程序使用綁定到Docker守護程序二進制文件中的BuildKit庫,以及一個“Docker容器”驅(qū)動程序,該驅(qū)動程序在Docker容器中自動啟動BuildKit。

不同驅(qū)動程序使用Buildx的用戶體驗非常相似。但是,有一些特性目前不受“docker”驅(qū)動程序的支持,因為綁定到docker后臺程序中的BuildKit庫使用不同的存儲組件。相反,默認情況下,使用“docker”驅(qū)動程序生成的所有圖像都會自動添加到“docker images”視圖中,而在使用其他驅(qū)動程序時,需要使用–output選擇輸出圖像的方法。

使用生成器實例

默認情況下,如果支持的話,Buildx使用“docker”驅(qū)動程序,提供的用戶體驗與本機docker構(gòu)建非常相似。請注意,必須使用本地共享守護程序來構(gòu)建應(yīng)用程序。

Buildx允許創(chuàng)建獨立構(gòu)建器的新實例。可以使用它來為CI構(gòu)建獲取一個作用域環(huán)境,該環(huán)境不會更改共享守護程序的狀態(tài),或者用于隔離不同項目的生成。可以為一組遠程節(jié)點創(chuàng)建一個新實例,形成一個構(gòu)建場,并在它們之間快速切換。

可以使用docker buildx create命令創(chuàng)建新實例。這將基于當(dāng)前的配置創(chuàng)建一個新的構(gòu)建器實例,其中包含一個節(jié)點。

要使用遠程節(jié)點,可以在創(chuàng)建新生成器時指定DOCKER_HOST或遠程上下文名稱。創(chuàng)建新實例后,可以使用inspect、stop和rm命令管理其生命周期。要列出所有可用的生成器,請使用ls。在創(chuàng)建一個新的構(gòu)建器之后,還可以向它添加新的節(jié)點。

要在不同的構(gòu)建器之間切換,請使用docker buildx
use。運行此命令后,生成命令將自動使用此生成器。

Docker 19.03還提供了一個新的Docker context命令,可以使用該命令為遠程Docker API端點提供名稱。Buildx與docker context集成,確保所有上下文自動獲得一個默認的builder實例。也可以在創(chuàng)建新的生成器實例或向其中添加節(jié)點時將上下文名稱設(shè)置為目標(biāo)。 構(gòu)建多平臺鏡像

BuildKit被設(shè)計成可以很好地為多個平臺進行構(gòu)建,而不僅僅適用于調(diào)用構(gòu)建的用戶不經(jīng)常運行的體系結(jié)構(gòu)和操作系統(tǒng)。

調(diào)用構(gòu)建時,可以設(shè)置–platform標(biāo)志以指定生成輸出的目標(biāo)平臺(例如,linux/amd64、linux/arm64、darwin/amd64)。

當(dāng)當(dāng)前builder實例由“docker
container”驅(qū)動程序支持時,可以一起指定多個平臺。在本例中,它構(gòu)建一個清單列表,其中包含所有指定架構(gòu)的映像。當(dāng)在docker run或docker service中使用此映像時,docker會根據(jù)節(jié)點的平臺選擇正確的映像。

可以使用Buildx和Dockerfiles支持的三種不同策略構(gòu)建多平臺映像:

在內(nèi)核中使用QEMU仿真支持

使用同一生成器實例在多個本機節(jié)點上構(gòu)建

使用Dockerfile中的stage交叉編譯到不同的架構(gòu)

如果節(jié)點已經(jīng)支持QEMU,那么QEMU是最簡單的開始方法(例如。如果使用的是Docker Desktop)。它不需要更改Dockerfile,BuildKit會自動檢測可用的輔助架構(gòu)。當(dāng)BuildKit需要為不同的體系結(jié)構(gòu)運行一個二進制文件時,它會通過binfmt_misc處理程序中注冊的二進制文件自動加載它。

使用多個本機節(jié)點可以更好地支持QEMU無法處理的更復(fù)雜的情況,并且通常具有更好的性能。可以使用–append標(biāo)志向構(gòu)建器實例添加其他節(jié)點。

assuming

contexts node-amd64 and node-arm64 exist in “docker context ls”

$ docker
buildx create --use --name mybuild
node-amd64

mybuild

$ docker
buildx create --append --name mybuild
node-arm64

$ docker buildx build --platform
linux/amd64,linux/arm64 .

最后,根據(jù)您的項目,使用的語言可能對交叉編譯有很好的支持。在這種情況下,Dockerfiles中的多階段構(gòu)建可以有效地用于使用–platform指定的平臺,使用構(gòu)建節(jié)點的本機架構(gòu)來構(gòu)建二進制文件。BUILDPLATFORM和TARGETPLATFORM等構(gòu)建參數(shù)列表在Dockerfile中自動提供,并可供作為構(gòu)建的一部分運行的進程使用。

FROM
–platform=$BUILDPLATFORM golang:alpine AS build

ARG
TARGETPLATFORM

ARG
BUILDPLATFORM

RUN echo
“I am running on $BUILDPLATFORM, building for $TARGETPLATFORM” >
/log

FROM alpine

COPY --from=build /log /log

高級生成選項

Buildx還旨在為高級構(gòu)建概念提供支持,這些概念不僅僅是調(diào)用單個構(gòu)建命令。

BuildKit高效地處理多個并發(fā)生成請求和重復(fù)數(shù)據(jù)消除工作。構(gòu)建命令可以與通用命令運行器(例如make)結(jié)合使用。但是,這些工具通常按順序調(diào)用構(gòu)建,因此不能充分利用BuildKit并行化的潛力,也不能為用戶組合BuildKit的輸出。對于這個用例,添加了一個名為docker buildx bake的命令。

bake命令支持從合成文件構(gòu)建圖像,類似于合成構(gòu)建,但允許將所有服務(wù)作為單個請求的一部分同時構(gòu)建。

將buildx設(shè)置為默認生成器

運行命令docker buildx install將docker buildx命令設(shè)置為docker buildx的通假名。這使得docker build能夠使用當(dāng)前buildx builder。

要刪除此通假名,請運行docker buildx uninstall。

總結(jié)

以上是生活随笔為你收集整理的Docker Buildx插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。