構建和推送多架構鏡像到容器鏡像服務
更新時間 2025-03-11 20:59:04
最近更新時間: 2025-03-11 20:59:04
分享文章
本節介紹了容器鏡像服務: 構建和推送多架構鏡像到容器鏡像服務。
操作場景
多架構鏡像是指在同一個鏡像倉庫中包含了多個不同架構的鏡像,以滿足不同架構的硬件平臺的需求。
當容器運行時拉取多架構鏡像時,可以自動選擇適配當前操作系統架構的鏡像,從而提高部署效率。
本文介紹如何構建多架構鏡像并推送到容器鏡像服務。
前提條件
已開通容器鏡像服務企業版實例,參考:開通企業版實例
本地已安裝Docker客戶端
操作步驟
通過Dockerfile構建多架構鏡像
本節以Go項目為例,構建如下Dockerfile文件 :
ARG GOLANG_IMAGE="golang:1.19.3"
ARG BASE_IMAGE="alpine:3.16.5"
ARG TAG=1.0.0
FROM ${GOLANG_IMAGE} as build-cache
WORKDIR /build
COPY . ./
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-X my-app/version.Version=${TAG}" -o my-app .
FROM ${BASE_IMAGE}
COPY --from=build-cache /build/my-app /
WORKDIR /
ENTRYPOINT ["./my-app"]登錄容器鏡像服務企業版實例。
docker login –username=<username> <企業版實例地址>
使用
docker buildx命令構建并推送多架構鏡像到容器鏡像服務企業版實例。
docker buildx build . -t <企業版實例地址>/<命名空間>/<鏡像倉庫>:<版本> --platform linux/amd64,linux/arm64 --push通過已有鏡像構建多架構鏡像
若本地已有多個單架構鏡像,則可以將其合并成一個多架構鏡像。本節以一個arm64架構和一個amd64架構的Nginx鏡像為例進行演示。
登錄容器鏡像服務企業版實例。
docker login –username=<username> <企業版實例地址>
通過
docker tag和docker push命令將單架構鏡像分別推送至容器鏡像服務企業版實例:
docker tag nginx:arm64 <企業版實例地址>/<命名空間>/nginx:arm64
docker push <企業版實例地址>/<命名空間>/nginx:arm64
docker tag nginx:amd64 <企業版實例地址>/<命名空間>/nginx:amd64
docker push <企業版實例地址>/<命名空間>/nginx:amd64通過
docker manifest create命令創建一個多架構鏡像的Manifest List:
docker manifest create <企業版實例地址>/<命名空間>/nginx:multi \
<企業版實例地址>/<命名空間>/nginx:arm64 \
<企業版實例地址>/<命名空間>/nginx:amd64通過
docker manifest push命令將Manifest List推送到容器鏡像服務企業版實例中:
docker manifest push <企業版實例地址>/<命名空間>/nginx:multi