• docker打包多架构镜像(manifest)


    在docker仓库上,经常能看到这样的镜像

    在这里插入图片描述

    在一个”镜像“中,包含了三个架构的镜像

    本质上,外部看到的这个镜像,其实不算是一个镜像,应该称它为镜像清单列表(manifest list)

    manifest是一个文件,其中包含了镜像的基本信息,例如架构,大小等。

    通过这个文件,可以找到对应具体的镜像

    对于docker客户端而言,可以将这个文件当成镜像来使用,例如docker pull,docker run

    通过将多个镜像的清单文件,汇总成一个清单列表,为每个清单文件标注上对应架构

    可以实现docker多架构打包,这样不同的系统架构,也可以使用同一个镜像,就不用再给镜像每个镜像的版本后面拼接 -arm64 或者 -amd64

    docker manifest有三个常用的命令create、annotate、push

    注意:在使用manifest之前,必须保证目标镜像已经在仓库中存在,本地刚使用docker build或者docker tag新创建的镜像,比如要先push到仓库后才能使用docker manifest命令

    重要:harbor1.X版本不支持多系统架构manifest,harbor2.X版本支持多系统架构manifest

    下面演示打包多架构镜像

    示例镜像:centos:7.6.1810

    下面内容出现的 [harbor host] 需要替换为你自己的harbor仓库地址

    由于没有arm架构的机器,这里直接用tag,创建两个不同的镜像,模拟演示

    将两个不同架构的镜像,打包为一个镜像

    centos:7.6.1810-arm、centos:7.6.1810-amd =》 centos:7.6.1810

    docker tag centos:7.6.1810 [harbor host]/sample/centos:7.6.1810-arm
    docker tag centos:7.6.1810 [harbor host]/sample/centos:7.6.1810-amd
    
    docker push [harbor host]/sample/centos:7.6.1810-arm
    docker push [harbor host]/sample/centos:7.6.1810-amd
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建清单,将两个镜像并入一个清单列表中

    docker manifest create --insecure [harbor host]/sample/centos:7.6.1810 [harbor host]/sample/centos:7.6.1810-arm [harbor host]/sample/centos:7.6.1810-amd
    
    • 1

    在这里插入图片描述

    再为每个镜像,标注架构

    docker manifest annotate [harbor host]/sample/centos:7.6.1810 [harbor host]/sample/centos:7.6.1810-arm --os linux --arch arm64
    docker manifest annotate [harbor host]/sample/centos:7.6.1810 [harbor host]/sample/centos:7.6.1810-amd --os linux --arch amd64
    
    • 1
    • 2

    最后将清单推送到仓库,就可以进行pull操作了

     docker manifest push --insecure [harbor host]/sample/centos:7.6.1810
    
    • 1

    pull操作

    docker pull [harbor host]/sample/centos:7.6.1810
    
    • 1

    在执行pull操作时,客户端会自动将当前的架构发送给服务端,服务端则会响应对应架构的镜像

    docker daemon.json配置

    {
      "insecure-registries": ["[harbor host]"],
      "experimental": true
    }
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    OpenCV项目开发实战之一种预测图像质量得分的算法--附完整C++/Python实现源代码
    什么是电商云仓?
    PCBA涂覆三防漆的工作需要注意什么?
    聚观早报 |GPT-4周活用户数达1亿;长城汽车10月销量增加
    计算机网络:流量控制与可靠传输机制
    30条电商客服话术,快收好!
    接口测试,
    写技术博客的一些心得分享
    网站小程序开发有哪些步骤?
    MarkDown语法——更好地写博客
  • 原文地址:https://blog.csdn.net/qq_42561919/article/details/127970653