Docker 推送多架构镜像
在Docker Hub可以看到一个tag支持多种系统架构,这样在docker pull的时候,docker会自动判断选择对应的系统架构的镜像拉取。
我们也打包推送这样的多架构镜像。
首先要准备好多个架构的镜像,例如arm64和amd64的。具体构建方式可以使用docker buildx或选择真机构建。
本文以fuming/scaffold-eth-2 Tags | Docker Hub为例。
第一步:推送镜像
在arm64系统上,将arm64镜像打个tag:docker tag fuming/scaffold-eth-2:0.0.1 fuming/scaffold-eth-2:0.0.1-arm64
在amd64系统上,将amd64镜像打个tag:docker tag fuming/scaffold-eth-2:0.0.1 fuming/scaffold-eth-2:0.0.1-amd64
分别推送至Docker Hub:
bash
docker push fuming/scaffold-eth-2:0.0.1-arm64
docker push fuming/scaffold-eth-2:0.0.1-amd64
第二步:推送manifest
在任意系统上,使用docker命令:
bash
docker manifest create fuming/scaffold-eth-2:0.0.1 fuming/scaffold-eth-2:0.0.1-arm64 fuming/scaffold-eth-2:0.0.1-amd64
分别标注镜像架构:
bash
docker manifest annotate fuming/scaffold-eth-2:0.0.1 fuming/scaffold-eth-2:0.0.1-arm64 --os linux --arch arm64
docker manifest annotate fuming/scaffold-eth-2:0.0.1 fuming/scaffold-eth-2:0.0.1-amd64 --os linux --arch amd64
推送:
bash
docker manifest push fuming/scaffold-eth-2:0.0.1
随后在Docker Hub页面可以看到已经完成:
在Docker Hub页面手动将fuming/scaffold-eth-2:0.0.1-arm64
和fuming/scaffold-eth-2:0.0.1-amd64
两个tag删除即可。
同样的方式,可以创建latest的tag,创建manifest并推送,就是fuming/scaffold-eth-2 Tags | Docker Hub所展示的效果: