registry 地址: docker.io修改爲自已的地址
一. 創建各架構鏡像
arm: Dockerfile (base image: ubuntu:18.04)
FROM ubuntu@sha256:60a99a670b980963e4a9d882f631cba5d26ba5d14ccba2aa82a4e1f4d084fb1f
第一步,創建arm鏡像,並上傳
docker build -t docker.io/platform/multiarch_test:0.0.1-arm ./
docker push docker.io/platform/multiarch_test:0.0.1-arm
arm64: Dockefile (base image: ubuntu:18.04)
FROM ubuntu@sha256:fab7c78ecd4c52e801b8a597846ec5c00ff2e4f4d1d92f6af1c8390eabc1d2d5
第一步,創建arm64鏡像,並上傳
docker build -t docker.io/platform/multiarch_test:0.0.1-arm64 ./
docker push docker.io/platform/multiarch_test:0.0.1-arm64
amd64: Dockerfile (base image: ubuntu:18.04)
FROM ubuntu@sha256:0925d086715714114c1988f7c947db94064fd385e171a63c07730f1fa014e6f9
第一步,創建amd64鏡像,並上傳
docker build -t docker.io/platform/multiarch_test:0.0.1-amd64 ./
docker push docker.io/platform/multiarch_test:0.0.1-amd64
二. 創建manifest
docker manifest create docker.io/platform/multiarch_test:0.0.1 \
docker.io/platform/multiarch_test:0.0.1-arm \
docker.io/platform/multiarch_test:0.0.1-arm64 \
docker.io/platform/multiarch_test:0.0.1-amd64 \
--amend
三. 添加鏡像附加信息,用於架構及系統區分
附加信息參數:
--arch Set architecture
--os Set operating system
--os-features Set operating system feature
--variant Set architecture variant
- 爲arm 鏡像添加附加信息
docker manifest annotate
--arch=arm
--os=linux
--variant=v7
docker.io/platform/multiarch_test:0.0.1
docker.io/platform/multiarch_test:0.0.1-arm
- 爲arm64鏡像添加附加信息
docker manifest annotate
--arch=arm64
--os=linux
--variant=v8
docker.io/platform/multiarch_test:0.0.1
docker.io/platform/multiarch_test:0.0.1-arm64
- 爲amd64鏡像添加附加信息
docker manifest annotate
--arch=amd64
--os=linux
docker.io/platform/multiarch_test:0.0.1
docker.io/platform/multiarch_test:0.0.1-amd64
四. 推送manifest 到 repository
docker manifest push docker.io/platform/multiarch_test:0.0.1
五. 測試
於各架構機器之上,執行以下命令
docker pull docker.io/platform/multiarch_test:0.0.1
docker run -ti docker manifest push docker.io/platform/multiarch_test:0.0.1 sh
如果都正常運行,則創建各架構鏡像成功。