纵欢1.v1最火的一句,纵欢免费阅读
DouJia 2025-05-08 12:30 18 浏览
Docker registry概述
用一句话解释Docker registry就是纵欢1.v1最火的一句:存放docker image的远程仓库。在使用docker的过程中,我们一定会用到docker Registry,当我们使用docker的pull命令(下载镜像),或者run一个本地没有的镜像时,docker engine会从默认的仓库下载对应的镜像。
目前,docker pull命令默认仓库是docker的官方仓库,这样就导致一个问题,下载镜像速度比较慢。所以在大型分布式docker集群中,通常都会配置一个私有的docker registry,这样能提高镜像****,从而提升应用的启动速度;也方便管理镜像。
docker registry的安装方式也很简单,docker公司已经把registry封装在一个docker容器中了,我们只需要下载这个容器,然后启动,就可以使用了,十分方便。但是,这样启动的方式,只能有一个registry,在稍大一点的集群中,单点故障和性能瓶颈问题就比较突出了,扩展成高可用的分布式结构势在必行,所以很多公司在优化registry方面做了很多工作,目前开源的有VMware的Habor[1]和京东的speedy[2]。
Docker Registry发展历史 - 2013年3月13日,docker在github上有了第一个release[3]
- 2013年7月3日,docker在github上发布了docker registry v1[4]
- 2015年1月30日,docker registry v2(项目名叫docker distribution)有了第一个release,同时停止更新docker registry v1[5]
在使用docker registry v2的时候需要注意,只有docker1.6以上版本才支持registry v2,这并不意味着1.6以后只能用v2版本,我们从源代码里可以看出,docker Engine在下载镜像的时候,会自动判断远端仓库是v1还是v2版,从而使用不同的下载策略,这个策略可太重要了。下面我们就讲一下v1和v2下载策略的区别。
图1 v1版串行下载layer
我们知道,一个docker image是由很多的layer组成的,registry v1的下载过程如图1所示,下载镜像时也是以layer为最小单元下载的,在v1的时代docker image,镜像结构有一种链表一样的组织,当下载完一个layer时,才能得到parent信息,然后再去下载parent layer,这样结构显然效率不高,所以在v2中,改变了这种结构,在image的manifest文件中存储了所有的layer信息,这样拿到所有的layer信息,就可以并行下载了,提高了下载效率,过程如图二所示。
图二 v2版升级为并行下载layer
还有就是使用的开发语言也有改变,从python变成go。
Docker registryV2整体架构图
图3 docker registry 2.0架构图[6]
从架构图上我们发现,registry v2的架构还是很简单的,它的核心是一个web服务器,从阅读源码也会发现,具体实现是用go语言的net/http包中的http.Server,在registry初始化时绑定了rest接口。请求会触发相应的handler,handler会从后端存储中取出具体的数据并写入response。这个过程也很容易理解。
Registry启动源码分析 下面我们就讲一下registry的启动过程,我也是第一次细读开源项目的源码,也讲一下我作为一个新手是如何阅读源代码的。
既然registry是以一个docker container形式运行的,要看它是如何启动的,当然首先看它的Dockerfile
图4 Dockerfile
主要做了两件事纵欢1.v1最火的一句:
1. 拷贝代码到容器中;
2. 编译成二进制可执行文件;
3. 指定程序入口;
当我们运行docker run –p 5000:5000 registry:2时,容器内部registry的启动命令其实是registry serve /etc/docker/registry/config.yml,
进入到项目中找main函数,发现程序的入口文件是/cmd/registry/main.go,main函数也只有一句话:
其实在加载RootCmd时已经做了命令绑定,子命令serve对应的实现在/registry/registry.go L 30,调用的内容主要有:
1. 读取配置文件;
2. 把配置参数传递给NewRegistry()函数,用来实例化一个registry对象(虽然对象这个词用在go语言里并不合适,单张这样类比更好理解);
3. registry进入端口监听状态,启动完毕。
Registry对象的结构定义在/registry/registry.go L68,Registry结构体声明了三个成员,如图5所示,有配置参数,app,还有一个http Server,显而易见,最重要的就是app这个成员了。
图5 Registry结构体
App结构体的定义在/registry/handlers/app.go L54,成员长,主要有:
1. driver 指明了后端存储,可以通过driver进行读/写/查询等操作
2. router 包含了http路由规则,把不同的请求分发到不同的handler上
3. registry 主要的app后端
4. accessController 访问控制器
NewApp()函数完成了App实例的初始化,实现在/registry/handlers/app.go L91。该函数的大体流程如下:
1. 声明一个app实例
2. 给app实例绑定web handler
3. 初始化app的后端存储驱动
4. 初始化app的密钥
5. 配置app的redis缓存
6. 初始化app的后端存储重定向功能
7. 根据参数初始化app的后端registry
8. 返回app实例
至此,/registry/registry.go的NewRegistry()也调用结束,返回了registry实例,调用registry的ListenAndServe()进入监听状态,直到registry结束。
体验&总结 作为一个阅读源码的新人,深感有一个好的IDE对于阅读源码是多么重要,我使用的是Idea14+GO插件作为开发环境,有一点需要注意的是,docker registry项目的引用都是github/***开头,所以需要把源码放在go语言的src下才能引用的到,这样也方便代码间跳转。同时,使用IDE的代码间Forward/Backward功能,可以快速跳转到上一个光标位置,这样也会提高代码阅读效率。
Docker在云计算中扮演了越来越重要的角色,Docker registry是整个平台重要的一环,但是它现在还存在很多问题,优化registry,是一个商用的容器云平台必须要做的一件事,阅读它的代码便是做优化的前提,下一期,为您带来《docker registry后端存储源码解读》。
Docker registryV2源码解读【下】镜像下载
镜像下载过程示意图
Docker engine发生了什么
Docker registry的相关接口
从driver实现的接口反推调用关系
来源:
https://www.youruncloud.com/docker/1_70.html
相关推荐
-
- 最新电影2025热播最火,最新电影2025热播最火剧免费观看
-
首次超过电影票房规模最新电影2025热播最火,预计2025年市场规模将达6343亿元最新数据显示最新电影2025热播最火,截至2025年1月,红果免费短剧APP月活跃用户规。那么2025年芒果台热播剧有哪些?芒果2025电视剧片单中哪...
-
2025-05-09 10:30 DouJia
- 最火的微信名称,最火的微信名称拼音
-
1在红尘中漫步最火的微信名称,木与火最火的微信名称的交织2火燃烧木,倾国倾城的火焰虚空舞动3木与火的缠绵,演绎不灭火的热情4星木之旅,火雨倾盆5如火似木,燃烧的激情无法抗拒6借个...
-
- 最火的游戏手游(最火的游戏手游排行榜前十名)
-
1元梦之星评分80一场跨越星际最火的游戏手游的多人派对游戏,由国内知名大厂研发在这里,您可以收集星宝参与全球角色联动,体验欢乐的派对氛围,享受无尽的欢乐2神仙道3评分85融合了中国传统美学与剪纸皮影艺术,这款卡牌手游将带领您踏上...
-
2025-05-09 06:30 DouJia
-
- 最火电影2025排行榜最新,最火电影2025排行榜
-
2025年最火最火电影2025排行榜的电影难以准确预测最火电影2025排行榜,因为“最火”通常取决于观众的口味电影的宣传口碑等多种因素不过最火电影2025排行榜,我们可以根据目前已知的信息,列举一些有望在2025年引起轰动的电影作品例如,封...
-
2025-05-09 04:30 DouJia
-
- 最火游戏羊了个羊,有一个游戏叫什么羊
-
游戏类型“羊了个羊”是一款堆叠式的消除游戏玩家需要将上方落入的各种形状的“羊”通过点击的方式放入下方7个槽位中当3个相同“羊”碰到一起时就会消除梗的流行起源游戏的难度很高最火游戏羊了个羊,需要玩家不断思考和尝试每一关都只有有限的移动步数,且...
-
2025-05-09 02:30 DouJia
-
- 目前最火的手游游戏排行,最火手机游戏有哪些
-
1、和平精英原名刺激战场是腾讯的另一款热门游戏起初最火手机游戏有哪些,由于版号问题,腾讯不得不将其更名为和平精英现在,尽管端游绝地求生的人气有所下滑,但手机端的吃鸡游戏却因其简单操作和女性玩家的参与而变得更加受欢迎3皇室战争皇室战争在2...
-
2025-05-09 00:30 DouJia
-
- 百度热搜
- 新浪热搜
- 1 习近平同俄罗斯总统普京举行会谈
- 2 沸 特大暴雨来了
- 3 新 卫健委发文 大批医院要开设新科室
- 4 Citywalk带你探索莫斯科
- 5 新 工信部将整顿“隐藏式车门把手”
- 6 沪上阿姨IPO 山东夫妇大赚
- 7 印度称摧毁巴第二大城市防空系统
- 8 英美就关税贸易协议条款达成一致
- 9 新 众泰汽车年销14辆 高管拿百万年薪
- 10 两天两场发布会释放什么信号
- 最新抖音
-
抖音打工生活模拟器攻略,抖音打工生活模拟器攻略视频
1、生活以痛吻我抖音打工生活模拟器攻略,我对生活报之以歌我们有幸专访了职场浮生记“路靖杰是一个编剧...
探索抖音电脑版:官方下载与全新体验,抖音电脑版官方下载免费下载
在这个移动互联网飞速发展的时代,抖音作为一款风靡全球的短视频社交平台,以其丰富多彩的内容和强大的用户...
探索抖音电脑版官方下载104:新时代的娱乐革命,抖音电脑版官方下载的网址
在这个数字化飞速发展的时代,社交媒体平台已经成为我们生活中不可或缺的一部分。抖音,作为一款风靡全球的...
抖音电脑版官方下载2020:短视频潮流的新体验,抖音电脑版官方下载的网址
在这个数字时代,抖音作为一款风靡全球的短视频应用,已经成为了许多年轻人表达自我、分享生活和娱乐休闲的...
抖音二维码加好友二维码图片最新的简单介绍
在好友添加页面中抖音二维码加好友二维码图片最新,先点击上方的“发现好友”标签抖音二维码加好友二维码图...
抖音创作服务平台怎么赚钱,抖音创作服务平台赚钱是真的吗
一广告收入广告收入是抖音创作服务平台最主要的赚钱方式之一在抖音上抖音创作服务平台怎么赚钱,用户可以...
探索抖音电脑版官方下载2021:娱乐与创意的新天地,抖音电脑版官方下载的网址
在这个快节奏的数字时代,抖音已经成为全球范围内广受欢迎的短视频平台。它不仅为用户提供了丰富的娱乐内容...
探索抖音电脑版官方下载2022:新体验,新可能,抖音电脑版官方下载-抖音PC客户端官方版下载-下载之家
随着社交媒体的蓬勃发展,抖音已经成为了全球范围内最受欢迎的短视频平台之一。2022年,为了满足用户多...
- 最新快手
-
快手刷双击0.01元100个双击ks极速的简单介绍
1、但不一定下过快手极速所以很多人应该都是快手极速新用户老用户同样也可以薅羊毛弄个20100多快手刷...
快手小游戏进入入口(小游戏 打开)
TongDianConvivialT.D 这是一家有着白色海洋球的餐厅 这是一家孩子哭...
快手小店倪海芳(快手小店倪海芳是谁)
1、关芳和倪海杉干兄妹关系1快手倪海杉连麦快手小店关芳2关芳快手小店倪海芳,官方谐音也,本名倪海芳,...
快手极速版怎么赚钱,下载快手极速版挣零花钱
1、在快手极速版上发视频赚钱快手极速版怎么赚钱的方法主要有以下几种接广告赚钱通过不断更新优质的短视频...
快手小游戏官方正版苹果版,快手小游戏官方正版
快手小游戏的打开步骤如下操作环境OPPOReno7ColorOS121快手108301在快手首页,点...
快手官方下载安装免费下载最新版,快手安装下载
1打开浏览器,搜索“快手电脑版下载”2进入官方网站,找到适用于Windows系统的快手电脑版下载链接...
关于快手点赞在线自助平台的信息
不能刷快手不能购买或第三方刷播放量和赞快手点赞在线自助平台,这是违规行为,会被快手平台惩罚虽然不能购...
快手小店App提现不了怎么办,快手小店app
商家登录rdquo或类似的选项快手小店app,点击后会跳转到商家登录界面在商家登录界面,输入正确的账...
- 热门关注