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
如果都正常运行,则创建各架构镜像成功。