• 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
  • 相关阅读:
    微服务架构学习与思考(14):监控和可观测性详细介绍
    [附源码]Python计算机毕业设计本科生外出请假管理信息系统
    项目开发总结
    【设计模式】备忘录模式
    温度及pH敏感性聚乙烯醇/羧甲基壳聚糖水凝胶/金银花多糖/薄荷多糖/O-羧甲基壳聚糖水凝胶
    MySQL数据库基本操作
    Flink学习13:Flink外接kafka数据源
    07.URL调度器工作原理
    反编译过程中会面临哪些挑战和难题
    (入门自用)--Linux--文件系统--磁盘--1019
  • 原文地址:https://blog.csdn.net/qq_42561919/article/details/127970653