- 首先保证本地已经包含两个平台的镜像,并且这两个镜像在远程仓库存在
- 这里可以看到,有两个镜像,分别是arm64和 amd64。还有一点需要保证的是:远程仓库里面也必须要有这两个镜像,否则下面创建
manifest
时,会提示:no such manifest: openjdk:8u342-jdk-slimaa
docker manifest create --insecure openjdk:8u342-jdk-slimaa openjdk:8u342-jdk-slimaa-amd64 openjdk:8u342-jdk-slimaa-arm64
- 声明不同架构镜像对应的操作系统和cpu架构类型
docker manifest annotate openjdk:8u342-jdk-slimaa openjdk:8u342-jdk-slimaa-amd64 --os linux --arch amd64
docker manifest annotate openjdk:8u342-jdk-slimaa openjdk:8u342-jdk-slimaa-arm64 --os linux --arch arm64
- 查看
manifeat
docker manifest inspect openjdk:8u342-jdk-slimaa
- 将manifest推送到私用仓库中
docker manifest push --insecure openjdk:8u342-jdk-slimaa
6. 在这里就不用推送两个镜像到镜像仓库了,因为制造这个镜像最开始的条件就是在远程镜像仓库必须有这两个镜像。
可以看到私用镜像仓库上面已经有了
8u342-jdk-slimaa
版本,并且包含两个不同架构的镜像,其中镜像的ID分别是下面的两个不同架构的镜像的ID
。
- 随便找一台
x86_64
架构的机器测试拉取镜像:
docker pull openjdk:8u342-jdk-slimaa
- 查看镜像的架构是否一致:
docker inspect 镜像 ID 或者镜像REPOSITORY:TAG
docker inspect openjdk:8u342-jdk-slimaa