Docker - 雲構建



Docker 雲構建是一種基於雲的服務,旨在加速容器映象的構建。它將構建工作負載從本地機器轉移到遠端 BuildKit 例項,利用雲計算能力和共享快取,從而顯著縮短構建時間。這尤其有利於複雜的多平臺構建以及開發人員團隊,他們現在可以重用預構建映象,從而提高協作效率和生產力。

Docker 雲構建最顯著的功能之一是其對多種架構的原生支援。因此,可以輕鬆地為各種晶片組建立應用程式,而無需遇到複雜的設定和模擬器。這透過加快構建速度和提高效率,使開發變得非常容易。

Docker 雲構建的功能

以下是 Docker 雲構建的一些突出功能,使其如此受歡迎和廣泛使用:

功能 描述
遠端 BuildKit 構建在雲基礎設施上執行,從而減輕本地機器的負載。
共享構建快取 在構建之間重用之前構建的層,從而顯著加快後續構建速度。
多平臺構建 原生支援為多個架構(例如,amd64、arm64)構建映象,無需使用模擬器。
自動構建最佳化 無需手動干預即可最佳化構建流程,提高構建效率。
雲端儲存整合 輕鬆連線到 Amazon S3 等雲端儲存提供商,實現無縫工件管理。
構建歷史 跟蹤和管理構建歷史,以便更好地進行除錯和分析。
安全 採用加密和訪問控制來保護構建流程和工件。
可擴充套件性 根據構建需求動態擴充套件資源,確保一致的效能。
構建洞察 提供有關構建時間、成功率和資源利用率的詳細分析。
Docker Hub 整合 與 Docker Hub 無縫整合,以便輕鬆推送和管理映象。

Docker 雲構建工作流程

Docker 雲構建工作流程精簡高效,旨在加快容器映象構建過程。

  • 啟動 - 開發人員使用所需的引數啟動構建命令(例如,docker buildx build)。
  • 身份驗證 - 安全的使用者身份驗證確保 Docker 雲構建僅允許授權訪問該服務。
  • 遠端構建 - 它不是在本地機器上構建,而是將構建上下文傳送到遠端的基於雲的 BuildKit 例項。這為更快的構建時間帶來了更強大的雲基礎設施。
  • 快取層 - Docker 雲構建智慧地使用共享構建快取。如果快取中已存在某個層,它將重用這些層以大大加快構建速度。
  • 構建執行 - 根據 Dockerfile 中的定義,使用 BuildKit 例項執行構建的階段。這包括獲取基礎映象、執行命令和建立新層。
  • 映象建立 - Docker 雲構建在成功執行其指令後,將建立最終的容器映象。
  • 推送到倉庫 - 生成的映象將自動推送到容器倉庫(如 Docker Hub)進行儲存和共享。
  • 本地載入(可選) - 啟用後,映象將直接載入到本地 Docker 引擎中以立即使用。

Docker 雲構建命令和示例

讓我們看一下最重要的 Docker 雲構建命令以及一些實用的示例,這些示例將幫助您順利入門。

設定和管理構建器

Docker Buildx Create 命令

$ docker buildx create --use --name my-builder cloud-ORG-BUILDER_NAME

說明

此命令將建立一個名為 my-builder 的新構建器例項,然後將其連線到您組織內的 Docker 雲構建構建器。如果您使用 --use 標誌,它將將其設定為其餘構建命令的預設構建器。

示例

$ docker buildx create --use --name my-cloud-builder cloud-myorg-builder-us-east-1

Docker Buildx List 命令

$ docker buildx ls

說明

此命令列出所有可用的構建器例項。這包括連線到 Docker 雲構建的例項。它將幫助您識別您可以隨時使用的構建器。

Docker Buildx Remove 命令

$ docker buildx rm my-builder

說明

上述命令將刪除提到的構建器例項(在本例中為 my-builder)。您必須謹慎使用此命令,因為它會刪除構建器的配置和快取。

Docker Buildx Create Context 命令

$ docker context create my-cloud-context --docker "host=https://cloud.docker.com" --builder my-builder

說明

上述命令將建立一個名為 my-cloud-context 的新 Docker 上下文。它將配置為使用 Docker 雲構建構建器 (my-builder)。此上下文可用於後續構建命令以定位雲構建器。

構建映象

Docker Buildx Build 命令

$ docker buildx build --builder my-builder --tag my-image 

說明

這是最基本的構建命令。它使用提到的構建器例項 (my-builder) 使用當前目錄 (.) 中的 Dockerfile 構建映象,並將生成的映象標記為 my-image。

Docker Buildx 指定平臺

$ docker buildx build --builder my-builder --platform linux/amd64,linux/arm64 --tag my-image --push .

說明

執行上述命令後,它將為 linux/amd64 和 linux/arm64 架構構建多平臺映象。構建完成後,映象將自動推送到 Docker 配置中定義的倉庫。

Docker Buildx 快取層

$ docker buildx build --builder my-builder --cache-from type=registry,ref=my-registry/cache --cache-to type=registry,ref=my-registry/cache .

說明

當我們使用 –cache-from 標誌時,它將允許透過從 my-registry/cache 中提取快取層並將新層推回其中來進行高效構建。這將大大加快進一步的構建速度。

Docker Buildx 構建引數

$ docker buildx build --builder my-builder --build-arg VERSION=1.2.3 --tag my-image .

說明

您可以使用 –build-arg 選項將構建引數 (VERSION=1.2.3) 傳遞給 Dockerfile。這將允許您根據外部變數自定義構建過程。

Docker Buildx 指定 Dockerfile

$ docker buildx build --builder my-builder --file Dockerfile.prod --tag my-image .

說明

您可以透過使用 --file 選項指定 Dockerfile 的名稱來使用特定的 Dockerfile。上述命令將使用名為 Dockerfile.prod 的特定 Dockerfile 進行構建,而不是預設的 Dockerfile。這對於擁有不同的構建配置很有用。

Docker Buildx 使用 Bake 檔案

$ docker buildx bake --builder my-builder --file docker-bake.hcl

說明

如果要構建 Bake 檔案 (docker-bake.hcl) 中定義的多個映象,可以使用上述命令。Bake 檔案提供了一種更好的方法來編排複雜的多服務構建。

檢查和除錯

$ docker buildx imagetools inspect my-image

說明

上述命令分析多平臺映象,提供有關每個包含平臺的映象配置和層的詳細資訊。

$ docker buildx imagetools create --tag my-new-image my-image --platform linux/arm64

說明

上述命令將從多平臺映象 (my-image) 中提取單個平臺映象(對於 linux/arm64)。然後將其標記為 my-new-image。這對於部署到特定架構很有用。

結論

Docker 雲構建是一個重要的工具,它將透過簡化和加速容器映象的構建過程來幫助任何開發人員。它透過具有共享快取的遠端 BuildKit 例項大幅減少構建時間,這使其非常適合多平臺和複雜專案。

關於 Docker 雲構建的常見問題

1. 什麼是 Docker 雲構建?

Docker 雲構建是一種旨在讓開發人員安全地將 Docker 映象構建解除安裝到雲中的服務,以實現更好的構建效能和生產力。它消除了本地構建基礎設施、資源和手動處理,這使得團隊之間可以更有效地無縫協作,同時提供多平臺映象構建。

2. Docker 雲構建如何提高構建速度?

Docker 雲構建為映象構建提供基於雲的計算資源和共享快取。使用此共享快取保留來自先前構建的層,並減少了重新構建所有內容的需要。對加速時間的影響是巨大的。

3. 使用 Docker 雲構建而不是本地構建有什麼好處?

除了構建速度更快之外,Docker Build Cloud 還原生提供多架構構建,讓您能夠輕鬆地在各種不同的架構上構建映象,而無需繁瑣的配置。這有助於更流暢地管理構建快取,並極大地增強了開發團隊之間的協作。

4. 如何開始使用 Docker Build Cloud?

要開始使用,您需要一個 Docker ID 並註冊 Docker Build Cloud。完成這些操作後,您可以設定 Docker Buildx CLI 外掛,在雲端配置您的構建器例項,並在遠端構建 Docker 映象。

廣告