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

什么是Docker多架构容器镜像

什么是Docker多架构容器镜像

在 Docker 中,同一个 Docker 镜像可以在不同的平台上运行,例如在 x86、ARM、PowerPC 等不同的 CPU 架构上。

为了支持这种多平台的镜像构建和管理,Docker 在 17.06 版本时引入了 Manifest 的概念,在此之前,Docker 并没有原生支持多平台镜像的构建和管理,因此开发者需要手动构建和管理不同平台的镜像。

多架构镜像实际上是多个镜像的集合,

多架构镜像 = 多个单架构镜像的集合
├── amd64 架构镜像
├── arm64 架构镜像
├── s390x 架构镜像
└── ppc64le 架构镜像

镜像存储

  • 每个架构版本独立存储
  • 共享镜像标签
  • 运行时自动选择

拉取机制, 使用多架构镜像,会自动识别当前环境架构。

# 自动匹配架构
docker pull myimage:latest

技术实现

  • Manifest List 机制
  • 每个架构对应独立镜像
  • 统一镜像名称管理

构建示例

A. 手动构建多架构镜像

# 构建多架构镜像
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t myimage:latest \
  --push .

B. Dockerfile 多阶段构建

FROM --platform=$TARGETPLATFORM ubuntu:latest

# 根据目标平台动态处理
RUN if [ "$TARGETARCH" = "amd64" ]; then \
      echo "x86 specific setup"; \
    elif [ "$TARGETARCH" = "arm64" ]; then \
      echo "ARM specific setup"; \
    fi

如何判断是不是多架构镜像

docker manifest inspect 命令默认查看远端镜像的架构信息。

docker manifest inspect registry.access.redhat.com/ubi9 | grep architecture

            "architecture": "amd64",
            "architecture": "arm64",
            "architecture": "s390x",
            "architecture": "ppc64le",

manifest inspect 查询远端,image inspect 查询本地。

# 先拉取镜像
docker pull registry.access.redhat.com/ubi9

# 再查看本地镜像架构
docker image inspect registry.access.redhat.com/ubi9 | grep Architecture

本地也可以运行容器查看

# 查看本机架构
uname -m

# 运行时检查
docker run --rm registry.access.redhat.com/ubi9 arch

除了使用命令行查看,也可以通过访问 hub.docker.com 远程镜像仓库来查看构建的多架构镜像信息

get-cpu-os-v4-multi-github

http://www.dtcms.com/a/16681.html

相关文章:

  • 云原生作业五
  • Python排序算法详解
  • 一键高清修复、智能剪辑,媒体处理还能多智能?
  • 什么是网关?网关有什么作用?API网关的主要功能,SpringCloud可以选择有哪些API网关?什么是限流算法?网关如何实现限流?一篇文章读懂网关的前世今生
  • 国产网络变压器有哪些品牌比较好
  • Record-Mode 备案免关站插件,让 WordPress 备案不影响 SEO 和收录
  • 网络安全-防御 第一次作业(由于防火墙只成功启动了一次未补截图)
  • redis之lua实现原理
  • 07:串口通信(二):收发数据包
  • Docker Desktop之Nginx
  • HTTP的状态码
  • 海思3559a_使用2.0.4.0版SDK编译固件下载后i2c_write和i2c_read不支持怎么办
  • OpenCV机器学习(4)k-近邻算法(k-Nearest Neighbors, KNN)cv::ml::KNearest类
  • 蓝桥杯(B组)-每日一题(求最大公约数最小公倍数)
  • MongoDB 7 分片副本集升级方案详解(下)
  • 用Echarts的柱状图实现圆柱体效果
  • linux c 读写锁pthread_rwlock
  • 3D打印技术:如何让古老文物重获新生?
  • MYSQL直接在SQL提取json字符串中的内容-----将13位时间戳转换成标准的日期格式【记录SQL常用函数】
  • 【如何掌握CSP-J 信奥赛中的模拟算法】
  • Python深度学习代做目标检测NLP计算机视觉强化学习
  • 【Linux系统】—— 简易进度条的实现
  • C++中运算符的底层是不是用函数实现的?
  • MATLAB使用技巧之局部放大图的制作(二)
  • 算法服务器跟算力卡有什么区别?
  • Eclipse JSP/Servlet 深入解析
  • 【C语言 】C语言 桌游开发数字竞拍(源码)【独一无二】
  • 微信小程序开发实用技巧篇
  • 支持列表拖拽嵌套,AI流式输出的多模态文档编辑器flowmix/docx: 全面升级
  • SQL Server:查看内存使用情况