前言
当我们的镜像包含多个架构时,我们需要构建多个镜像,这样拉取时就能根据当前机器的架构,拉取符合当前架构的镜像。
docker manifest 能帮助实现多架构推送,需要把docker的实验模式打开
用 docker version 查看Experimental是否为true 》 Experimental: true
笔记
首先保证本地已经包含两个平台的镜像包了
docker images 查看
还有一点需要保证的是:远程仓库里面也必须要有这两个镜像,否则下面创建 manifest时,会提示:no such manifest: xxxxxxxxxxx
要是仓库上没有就推送下两个平台的镜像
推送镜像
arm64机器:docker push songwqs1/onething2:arm64
x86-64机器:docker push songwqs1/onething2:x86_64
manifest
创建manifest包含两个不同架构镜像
docker manifest create songwqs1/onething2:2.4.1 songwqs1/onething2:x86_64 songwqs1/onething2:arm64
标注不同架构镜像
docker manifest annotate songwqs1/onething2:2.4.1 songwqs1/onething2:x86_64 --os linux --arch amd64
docker manifest annotate songwqs1/onething2:2.4.1 songwqs1/onething2:arm64 --os linux --arch arm64
推送多架构镜像
docker manifest push songwqs1/onething2:2.4.1
笔记2:备份其他人的镜像到自己仓库
1、首先你得有一个docker hub账号,然后点击右上角Create repository 创建好一个仓库
2、准备一台服务器,安装好docker
3、在SSH工具 执行:docker login
3、拉取源镜像到服务器 docker pull xxx/xxx
4、输入:docker images 查看是否拉取
5、拉取成功就重新命名:执行 docker tag xxx/xxx yyyy/yyy
xxx/xxx即 源用户名/仓库名,yyy/yyy即你的用户名/仓库名 如: docker tag onething1/wxedge:2.4.1 songwqs1/onething2:2.4.1
6、再执行docker images 看看是否修改成功
7、push到自己仓库:docker push 用户名/镜像名 如:docker push songwqs1/onething2