• 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
  • 相关阅读:
    国内程序员真的不如国外国外程序员?到底差在哪里?
    Hoops编程指南:03_4_viewing_windows
    【python】JSON标准库文件介绍及python中json模块使用
    前端标注开源库
    【Linux】shell命令以及运行原理和Linux权限详解
    实验七 团队作业4:团队项目需求建模与系统设计
    【信息融合】基于matlab BP神经网络和DS证据理论不确定性信息融合问题【含Matlab源码 2204期】
    【教3妹学算法-每日3题(2)】去掉最低工资和最高工资后的工资平均值
    作业-11.23
    基于JavaWEB+MySQL的学生在线测评考试系统
  • 原文地址:https://blog.csdn.net/qq_42561919/article/details/127970653