一、概述
Docker Buildx 是 Docker 官方提供的、基於 CLI 的工具,可以用於對 Docker 鏡像進行構建、打包、圖層管理等操作,同時提供了更快的構建速度和更強的跨平台構建能力。
Docker Buildx 構建鏡像的過程中,可以選擇將構建出來的鏡像推送到不同的鏡像倉庫或者其他存儲介質,比如推送到 Harbor 倉庫。
二、安裝 Docker Buildx
通過以下命令檢查 Docker 是否已經安裝:
“`
docker version
“`
如果已經安裝,請使用以下命令啟用 Docker Buildx:
“`
export DOCKER_BUILDKIT=1
“`
Docker Buildx 可以通過下載二進制文件或者通過 Docker 安裝
三、使用 Docker Buildx 構建鏡像
使用 Docker Buildx 構建鏡像的命令如下:
“`
docker buildx build -t –platform=
“`
其中,-t 指定鏡像名稱,–platform 指定構建的目標平台,上下文路徑指定 Dockerfile 所在的上下文路徑。例如:
“`
docker buildx build -t myimage –platform=linux/amd64,linux/arm64,linux/arm/v7 .
“`
上述命令將使用 Dockerfile 構建名為 myimage 的鏡像,同時支持 Linux 下的 x86_64、arm64 和 armv7 架構。
四、構建並推送到 Harbor 倉庫
Harbor 是一個企業級鏡像倉庫,支持 Docker 鏡像、Helm Chart、Helm Repository 和 OCI 鏡像格式,提供了鏡像掃描、多倉庫管理、安全審計、鏡像複製和自動化 CI/CD 等功能。
構建出來的 Docker 鏡像可以直接推送到 Harbor 倉庫,這裡將演示如何將構建好的 myimage 鏡像推送到 Harbor 中。
1. 首先需要登錄 Harbor 倉庫。執行以下命令:
“`
docker login -u -p
“`
2. 在 Harbor 界面中,創建一個新的項目(例如 myproject)。
3. 在工作目錄下創建一個特殊的文件 .dockerignore,用來忽略不想被傳輸到 Docker 守護進程中的文件和目錄。
例如,可以忽略 node_modules 目錄,以加速構建和傳輸過程:
“`
node_modules/
“`
4. 在相應的工作目錄下創建 Dockerfile。例如,下面是一個示例 Dockerfile:
“`
FROM node:latest
LABEL maintainer=”xxx@xxx.com”
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 3000
CMD [“npm”, “run”, “start”]
“`
5. 使用 Buildx 構建出 Docker 鏡像:
“`
docker buildx build -t //: –platform= –push .
“`
6. 構建成功後,可以在 Harbor 的對應項目中查看到該鏡像。
五、總結
本文以 Docker Buildx 為例,介紹了如何構建 Docker 鏡像並將其推送到 Harbor 倉庫中。本篇文章涵蓋了 Docker Buildx 的基本概念、安裝方法、使用方法以及如何推送到 Harbor 倉庫。讀者可以根據自己的實際需求和場景,使用 Docker Buildx 來更好地管理和推送 Docker 鏡像。
原創文章,作者:ESMD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/141443.html