如何保存/同步多架构容器 Docker 镜像

莱莱  金牌会员 | 2022-11-28 13:06:05 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 888|帖子 888|积分 2664

前言

随着容器、芯片技术的进一步发展,以及绿色、节能、信创等方面的要求,多 CPU 架构的场景越来越常见。典型的应用场景包括:

  • 信创:x86 服务器 + 鲲鹏 ARM 等信创服务器;
  • 个人电脑:苹果 Mac M1 + Windows 电脑(或旧的 Intel 芯片苹果电脑);
  • Edge:数据中心使用 x86 服务器,边缘 Edge 端使用低功耗的 arm 边缘设备(如树莓派等)。
容器云原生技术在这方面支持的是很好,但是实际使用中细节会有一些问题,举一个例子,就是:如何保存/同步多架构容器 Docker 镜像
本次先以将 Docker Hub 的镜像同步到本地镜像仓库为例说明。
词汇表

英文中文说明multi-arch image多架构镜像variant变体不同变体指的如:redis 镜像的 arm/v5 和 arm/v7 两种变体manifest清单manifest-list清单(的)列表layer(镜像)层image index镜像索引OCI 专有名词,含义和 manifest-list 相同manifest digest清单摘要容器镜像如何支持多架构

一个多架构镜像(A multi-arch image)是一种容器镜像,它可以组合不同架构体系(如 amd64 和 arm)的变体(variants),有时还可以组合不同操作系统(如 windows 和 linux)的变体。运行支持多架构的镜像时,容器客户端会自动选择与你的 OS 和架构相匹配的镜像变体。
多架构镜像是基于镜像清单和清单列表实现的。
清单(Manifests)

每个容器镜像都由一个“清单”表示。清单是一个 JSON 文件,用于唯一标识镜像,并引用其层(layer)及其相应的大小。
hello-world Linux 镜像的基本清单类似于以下内容:
  1. {
  2.   "schemaVersion": 2,
  3.   "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  4.   "config": {
  5.       "mediaType": "application/vnd.docker.container.image.v1+json",
  6.       "size": 1510,
  7.       "digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e"
  8.     },
  9.   "layers": [
  10.       {
  11.         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
  12.         "size": 977,
  13.         "digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced"
  14.       }
  15.     ]
  16. }
复制代码
清单列表 (Manifest-lists)

多架构镜像的清单列表(通常称为 OCI 镜像 的镜像索引)是镜像的集合(索引),您可以通过指定一个或多个镜像名称来创建一个。它包括有关每个镜像的详细信息,例如支持的操作系统和体系架构、大小和清单摘要 (manifest digest)。清单列表的使用方式与 docker pull 和 docker run 命令 中的镜像名称相同。
docker CLI 使用  docker manifest命令管理清单和清单列表。
<blockquote>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表