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

DockerHub 镜像仓库原理

镜像仓库


在定义任何的dockerfile的时候,都有一个from,需要一个基础镜像,这个基础镜像比如ubuntu,他就要去外网仓库里面拉去镜像,镜像仓库解决的是文件分发和存储的问题

不同的部门有不同的项目,这不同的项目我们叫做repository,在不同的子仓库里面我们又有一个一个的镜像保存在那里,同时每个镜像又有不同的标签。

主镜像仓库的域名,然后镜像仓库下面那哪个项目,那个镜像,哪个版本,这些信息就唯一的标示了一个容器镜像。

一个容器镜像包含了两个部分,一个是元数据,其实就是由dockerfile构建出来的描述文件,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的checksum这些信息都会记录下来,还有最终的可执行文件在哪就是在存储数据里面,就是在一个一个的blob里面,真正占有空间的就是这些blob。 

 

 

 

镜像仓库遵循OCI的Distribution Spec


容器镜像本身也支持了oci的规范,它分为image规范,容器运行时规范,后面又加了分发的规则,分发规范就是去定义了去实现一个容器镜像仓库,只要我实现了这些API,那我就可以和你这种runtime去做互动了,那么我就实现了一个镜像仓库。

 

 

 

数据和块文件


镜像是由元数据和块文件组成的,元数据里面就是对这些镜像的一个描述的核心信息,它包含的就是镜像的仓库信息,标签信息,校验码信息等等。通过这些信息就可以看到容器镜像是如何构建出来的。通过inspect就可以看到镜像的元数据信息。

那块文件就是真正组成镜像的联合文件层的实体。

imagefs,如果是docker的话,那么在overylay2下面,这个目录其实就是用来存放块文件的。

当你拉取一个容器镜像的时候,它相当于就将将块文件放在imagefs下面,进去那个目录就可以看到一个一个真实的文件了。

 

 

 

镜像仓库


镜像仓库其实就是将元数据和blob的真实信息存储在服务器端,它就负责存储这些文件,并且分发这些文件,这是镜像仓库的一个职责

 

相关文章:

  • Java 同步工具与组合类的线程安全性分析
  • springcloud之feign使用
  • Git的基本使用(用户初始化配置、新建代码库、把文件提交到缓存区、把文件提交到本地仓库等)
  • node切换后没有npm功能
  • uniapp AES加密解密
  • 第二届邯郸钢铁展会,图扑软件荣获“2022钢铁行业智造之星奖”
  • 第三届国际品质节,群硕企业与OI产品共同获奖
  • JSP琴行管理系统myeclipse开发mysql数据库bs框架java编程web网页结构
  • 智能座舱:汽车雷达的下一个战场
  • MindSpore应用案例——AI诗人
  • cordova 使用
  • 常见ai智能机器人呼叫中心等如何让短信营销更加有价值?
  • 极端气候肆虐催化,碳中和带出了一个“再生时代”
  • Cyclopropene-PEG-MAL Maleimide|环丙烯-聚乙二醇-马来酰亚胺
  • 大学生入学该准备哪些东西?Ipad好用电容笔测评
  • 2017 年终总结 —— 在路上
  • Apache Zeppelin在Apache Trafodion上的可视化
  • javascript 总结(常用工具类的封装)
  • Laravel5.4 Queues队列学习
  • maya建模与骨骼动画快速实现人工鱼
  • Redis的resp协议
  • Zsh 开发指南(第十四篇 文件读写)
  • 大数据与云计算学习:数据分析(二)
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 欢迎参加第二届中国游戏开发者大会
  • 力扣(LeetCode)965
  • 前端面试总结(at, md)
  • 入手阿里云新服务器的部署NODE
  • 使用Gradle第一次构建Java程序
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 无服务器化是企业 IT 架构的未来吗?
  • 移动端解决方案学习记录
  • 原生 js 实现移动端 Touch 滑动反弹
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​你们这样子,耽误我的工作进度怎么办?
  • #微信小程序:微信小程序常见的配置传旨
  • (c语言)strcpy函数用法
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (转)memcache、redis缓存
  • (转)shell调试方法
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)CentOS查看系统信息|CentOS查看命令
  • . NET自动找可写目录
  • .NET Micro Framework初体验
  • .net 发送邮件
  • .NET 使用配置文件
  • .NET处理HTTP请求
  • .NET中使用Redis (二)
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @JoinTable会自动删除关联表的数据
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [51nod1610]路径计数
  • [Docker]六.Docker自动部署nodejs以及golang项目