当前位置: 首页 > news >正文

多架构镜像整合全攻略:在Docker中实现单一镜像支持同时支持amd64和arm64架构

  • 多架构支持的挑战 :随着异构计算(如 ARM、x86、RISC-V 等)的普及,开发者需要为不同硬件平台提供对应的镜像,传统方式需维护多个版本(如 image:v1-amd64image:v1-arm64 ),导致版本管理复杂。
  • Docker 的解决方案 :通过 Manifest List(清单列表) 将多架构镜像合并到单一版本下,用户只需拉取 image:v1 ,Docker 会自动匹配当前平台对应的镜像。

Docker合并多架构镜像到一个镜像方案

拉取镜像

先将不同架构的镜像拉取到本地

docker pull registry.cn-guangzhou.aliyuncs.com/devyunze/linux_amd64_nginx:1.26.3docker pull registry.cn-guangzhou.aliyuncs.com/devyunze/linux_arm64_v8_nginx:1.26.3

在这里插入图片描述

修改镜像名

将不同架构镜像的 repository 修改一致,在tag 标签里做版本和架构的区分。

docker image tag registry.cn-guangzhou.aliyuncs.com/devyunze/linux_amd64_nginx:1.26.3 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3_amd64docker image tag registry.cn-guangzhou.aliyuncs.com/devyunze/linux_arm64_v8_nginx:1.26.3 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3_arm64

在这里插入图片描述

推送镜像

这里使用的是阿里云的容器镜像服务,但是不管使用哪家企业提供的镜像服务,其操作过程都是一样的,将本地的修改好名称的镜像推送上去。

docker push registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3_arm64docker push registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3_amd64

在这里插入图片描述
在这里插入图片描述

创建清单

docker manifest create registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3_arm64 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3_amd64

在这里插入图片描述

推送清单

docker manifest push registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3

在这里插入图片描述

在这里插入图片描述

删除清单

docker manifest rm registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3 

验证

arm64架构环境拉取amd64架构镜像验证

docker pull --platform linux/amd64 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3

在这里插入图片描述

在这里插入图片描述

运行镜像验证

docker run -d --name=nginx-test -p 80:80 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3 

在这里插入图片描述

运行镜像时可以看到,已经有警告提示信息说架构不匹配了。这就证明拉取到镜像的确实是amd64架构的镜像。

arm64架构环境拉取arm64架构镜像验证

先清理上一步测试的容器和镜像。

在这里插入图片描述

关闭并删除之前测试的容器和镜像。

docker stop d23741cd8db3docker rm d23741cd8db3docker rmi registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3

在这里插入图片描述

拉取arm64镜像

docker pull --platform linux/arm64 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3

在这里插入图片描述

运行镜像验证

docker run -d --name=nginx-test -p 80:80 registry.cn-guangzhou.aliyuncs.com/devyunze/nginx:1.26.3 

在这里插入图片描述

可以看到容器运行成功,并成功访问到nginx。

证明此次拉取到镜像的确实是arm64架构的镜像。

至此将多个架构镜像合并到一个镜像里的操作可以宣告成功了。

http://www.lryc.cn/news/606115.html

相关文章:

  • hive新增列之后插入新数据时,新列为NULL的解决办法
  • CentOS 7 编译 Redis 6.x 完整教程(解决 GCC 版本不支持 C11)
  • 告别物业思维:科技正重构产业园区的价值坐标系
  • AR智能巡检:工业4.0时代的降本增效利器
  • [人工智能-综述-17]:AI革命:重塑职业版图,开启文明新篇
  • 数据集归一化
  • 机器学习之逻辑回归(Logistic Regression)
  • 视觉图像处理中级篇 [2]—— 外观检查 / 伤痕模式的原理与优化设置方法
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step5—Nginx安装
  • Qt 常用控件 - 3
  • vue-seamless-scroll 与 echarts 三联水球图循环滚动的渲染难题-出现短暂空白
  • iOS高级开发工程师面试——其他
  • Linux大页内存导致服务内存不足
  • Java——方法
  • 基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析实践技术应用
  • EEG手工特征提取总结
  • RagFlow本地源码部署(非Docker)
  • 现在有哪些广泛使用的时序数据库?
  • AWS高级解决方案架构师黄海波:GenAI 时代非结构化数据处理的实践与趋势洞察
  • Linux性能检测与调优
  • 解决SparkSQL创建出来的数据库hive中无法识别的问题
  • 切割液性能智能调控系统与晶圆 TTV 预测模型的协同构建
  • toFixed()方法的报错注意
  • Python 程序设计讲义(47):组合数据类型——字典类型:创建字典
  • MySQL常用函数总结
  • 2025年7月最新一区SCI-基尔霍夫定律优化算法Kirchhoff’s law algorithm-附Matlab免费代码
  • [硬件电路-109]:模拟电路 - 自激振荡器的原理,一种把直流能量转换成交流信号的装置!
  • 专题:2025半导体行业研究报告:从AI芯片到封测突围的生死局|附40+份报告PDF、数据汇总下载
  • Apifox 7 月更新|通过 AI 命名参数及检测接口规范、在线文档支持自定义 CSS 和 JavaScript、鉴权能力升级
  • 鸿蒙拉起系统定位和app授权定位