Docker 建置概觀
Docker Build 採用用戶端-伺服器架構,其中
- 用戶端:Buildx 是用於執行和管理建置的用戶端和使用者介面。
- 伺服器:BuildKit 是處理建置執行的伺服器或建置器。
當您叫用建置時,Buildx 用戶端會將建置請求傳送到 BuildKit 後端。BuildKit 會解析建置指示並執行建置步驟。建置輸出會傳回用戶端或上傳到儲存庫,例如 Docker Hub。
Docker Desktop 和 Docker Engine 預設安裝 Buildx 和 BuildKit。當您叫用 docker build
命令時,您正在使用 Buildx 執行 Docker 捆綁的預設 BuildKit 建置。
Buildx
Buildx 是用於執行建置的 CLI 工具。docker build
命令是 Buildx 的包裝函式。當您叫用 docker build
時,Buildx 會解讀建置選項並將建置請求傳送到 BuildKit 後端。
Buildx 用戶端的功能不僅僅是執行建置。您也可以使用 Buildx 建立和管理 BuildKit 後端,稱為建置器。它也支援管理儲存庫中映像檔的功能,以及同時執行多個建置的功能。
Docker Desktop 預設安裝 Docker Buildx。您也可以從原始碼建置 CLI 外掛程式,或從 GitHub 儲存庫取得二進位檔並手動安裝。如需詳細資訊,請參閱 GitHub 上的 Buildx README。
BuildKit
BuildKit 是執行建置工作負載的守護程式。
建置執行從叫用 docker build
命令開始。Buildx 會解讀您的建置命令並將建置請求傳送到 BuildKit 後端。建置請求包含
- Dockerfile
- 建置引數
- 匯出選項
- 快取選項
BuildKit 會解析建置指示並執行建置步驟。當 BuildKit 執行建置時,Buildx 會監控建置狀態並將進度列印到終端機。
如果建置需要來自用戶端的資源,例如本機檔案或建置密鑰,BuildKit 會從 Buildx 請求所需的資源。
這是 BuildKit 比早期 Docker 版本中使用的舊版建置器更有效率的一種方式。BuildKit 只會在需要時請求建置所需的資源。相比之下,舊版建置器始終會複製本機檔案系統。
BuildKit 可以從 Buildx 請求的資源範例包括
- 本機檔案系統建置上下文
- 建置密鑰
- SSH Socket
- 儲存庫驗證權杖
如需 BuildKit 的詳細資訊,請參閱 BuildKit。