由于遇到arm的架构服务器,原有构建的docker 项目镜像不可用,构建过程中,遇到把镜像推送私服再构建不可用,发现单次多架构的镜像,拉取下来是符合当前架构的,为了拉取原有多架构的镜像,推送自己私服,要注意多个架构一起处理。
1、注意正常 docker pull 的情况下,都是只会拉取适合当前架构的版本镜像,所以私服传导时构建就会出现问题
2、拉取不同架构的镜像
#获取镜像源的明细
docker manifest inspect docker.m.daocloud.io/openjdk:8
#注意截图里的 amd64 和 linux ,这里说明运行环境,还有 amd64 但os 是windows 的,注意别选错
#分别拉取镜像 @ 后面是镜像中 digest 信息
docker pull docker.m.daocloud.io/openjdk:8@sha256:53ff4b6f85a89d88a34a0e8a00f1df940d15aee8cc1c717f919cc368ece0218e
docker pull docker.m.daocloud.io/openjdk:8@sha256:3af2ac94130765b73fc8f1b42ffc04f77996ed8210c297fcfa28ca880ff0a217
#重新标记,tag 也有可能是none ,这里调整标记命令即可,10.130.79.6:5000就是此处的私服地址
docker tag docker.m.daocloud.io/openjdk:8@sha256:53ff4b6f85a89d88a34a0e8a00f1df940d15aee8cc1c717f919cc368ece0218e 10.130.79.6:5000/openjdk:8-amd64
docker tag docker.m.daocloud.io/openjdk:8@sha256:53ff4b6f85a89d88a34a0e8a00f1df940d15aee8cc1c717f919cc368ece0218e 10.130.79.6:5000/openjdk:8-arm64
#先推送远程
docker push 10.130.79.6:5000/openjdk:8-amd64
docker push 10.130.79.6:5000/openjdk:8-arm64
#创建一个多架构镜像清单
docker manifest create 10.130.79.6:5000/openjdk:8 10.130.79.6:5000/openjdk:8-arm64 10.130.79.6:5000/openjdk:8-amd64
#添加架构信息
docker manifest annotate 10.130.79.6:5000/openjdk:8 10.130.79.6:5000/openjdk:8-amd64 --arch amd64 --os linux
docker manifest annotate 10.130.79.6:5000/openjdk:8 10.130.79.6:5000/openjdk:8-arm64 --arch arm64 --os linux --variant v8
#推送私有镜像
docker manifest push 10.130.79.6:5000/openjdk:8
#这样就可以去验证,在不同架构下去拉取镜像进行验证,或是通过以下命令,查看 maniftests 是否支持多架构
docker manifest inspect 10.130.79.6:5000/aees:latest