纵欢1.v1最火的一句,纵欢免费阅读
DouJia 2025-05-08 12:30 53 浏览
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
相关推荐
-
- 最火的交友软件app(最火的交友软件app推荐)
-
10MarryU相亲征婚APP实名制注册最火的交友软件app,资产认证最火的交友软件app,提供线下恋爱脱单技巧课程,高端征婚选择最好的交友软件是什么1MarryU相亲征婚APP实名制和资产认证增加最火的交友软件app了用户的信任度,线...
-
2025-07-10 00:30 DouJia
- 抖音里最火的几部小说,抖音最火小说排行榜前十名
-
云南能投物流公司2017年招聘30人 招聘岗位:物流园区运营总监(1人)物流园区运营总监(1人)口岸运营总监(1人)口岸运营总监(1人)经营管理部部长(1人)经营管理部部长(1人)投资主管(1...
-
- 最火的电影是什么名字,最火的电影叫什么名字
-
Hello~很高兴又和各位观众老爷见面最火的电影是什么名字了最火的电影是什么名字,我是Allen,话说各位有去电影院看《你的名字》吗? (不好意思放错图最火的电影是什么名字了) 如果说2016年哪部动画电影最火,我想,可能就是这部《...
-
2025-07-09 14:30 DouJia
-
- 最火电影2025排行榜(最火电影2025排行榜前十名)
-
2025年最可能火爆的十部电影包括射雕英雄传侠之大者哪吒之魔童闹海封神第二部战火西岐唐探1900蛟龙行动熊出没middot重启未来酱园弄731狂野时代以及小妖怪的夏天从前有座浪浪山等这些电影各具特色最火电影2025排行榜,涵盖最火电影202...
-
2025-07-09 07:30 DouJia
-
- 最火快手名字大全霸气,快手最火名字大全男
-
以下是一些适合男性快手最火名字大全男的快手名字建议久戦帝王寓意长久征战如同帝王般霸气不朽神王表示永不衰败快手最火名字大全男,如神王般强大傲血狂沙充满傲气与狂野,如沙漠中快手最火名字大全男的热血战士独坐山巅孤独而强大,象征着站在山顶的王者快手...
-
2025-07-09 00:30 DouJia
-
- 最火的电影图片,最火电影排行榜前十名2021
-
文学作品被改编成电影从来不少见,但2015年似乎特别多。不但有畅销小说,有经典名著,还有一些难度较大的作品,也出现在最火的电影图片了今年的排片表上,让文学青年不得不心痒痒。最火的电影图片我们大致整理了一下2015年刚刚上映以及将上映的电...
-
2025-07-08 21:30 DouJia
-
- 百度热搜
- 新浪热搜
- 1 树立远大志向 勇担时代大任
- 2 新 东方树叶出1.5L装 饮料为啥越卖越大
- 3 热 云南现80公斤巨无霸“菌王”
- 4 三预警齐发 全国多地将现暴雨天气
- 5 新 相声演员杨少华去世
- 6 小狗神似“灰太狼”走红
- 7 《以法之名》烂尾
- 8 大使馆:在韩中国公民加强安全防范
- 9 新 这个夏天商场靠孩子续命
- 10 再婚男给前妻儿子转300万被现任起诉
- 最新抖音
-
抖音名称昵称男生,抖音名称.昵称男
无论是对于已经出生的宝宝抖音名称.昵称男,还是即将出生的宝宝抖音名称.昵称男,对他们而言抖音名称...
抖音头像男士专用2023款励志,抖音头像男士专用2023款
安全目视化管理抖音头像男士专用2023款: 1、安全帽佩戴不规范,都未系好安全帽帽带;...
抖音外卖概念股龙头,抖音外卖概念股
一、投资亮点: 金证股份(600446)是国内最大抖音外卖概念股的金融证券软件企业,公司一...
抖音名字大全男繁体字,2020抖音火爆昵称繁体字男
1、网站的互动性。网站越来越注重网站的互动性抖音名字大全男繁体字了抖音名字大全男繁体字,因为这样...
抖音的晨曦姐姐怎么了,抖音晨曦姐姐到底是男是女
《汉宫春晓图》是中国十大传世名画之一。中国重彩仕女第一长卷。明代仇英作抖音晨曦姐姐到底是男是女,...
抖音名字符号图案大全可复制,抖音名字符号图案
品牌标识总是以品牌本质和核心价值或者其名称来定义。在这个项目中,一组品牌图标被描绘为两个主要元素...
抖音下载去掉水印(自己抖音下载去掉水印)
1960年2元纸币是第三套人民币抖音下载去掉水印的一种抖音下载去掉水印,这一版纸币于1964年4...
抖音下载的视频怎么把水印去掉,抖音下载下来的视频水印怎么去掉
打开抖音APP抖音下载的视频怎么把水印去掉,找到抖音下载的视频怎么把水印去掉你想要下载并去除水印的视...
- 最新快手
-
下载快手app(下载快手app下载)
打开手机的浏览器下载快手app,进入快手的官方首页在官方首页上,通常会有下载快手APP的链接或按钮点...
快手软件取关(快手软件取关软件)
现在快手软件取关我要给大家介绍这样一款游戏快手软件取关,这款游戏自从推出就登上了各大平台的下载榜...
快手app下载最新版202,下载快手 最新版
快手app下载最新版202我们都知道手机游戏尤其是网络游戏已经大面积的普及到了消费者的生活中来快...
快手市值多少亿2023(快手市值多少亿人民币2023)
1、四财务状况增长表现2023年多数企业实现增长,快手和爱奇艺净利润大幅上升,快手一季度净利润增长...
快手极速版怎么不显示红包圈了苹果版(快手极速版怎么不显示红包圈了苹果手机)
金币的上限快手极速版怎么不显示红包圈了苹果版,红包圈就不会再转动快手极速版怎么不显示红包圈了苹果版了...
快手小游戏什么时候回归(快手小游戏什么时候解封)
关于何为数据科学家,小科曾在文章中如此解释快手小游戏什么时候回归: 数据科学家是二十一世纪...
快手最新版免费下载,快手2021最新版大全下载
虽然一代好软vst全聚合倒下了快手最新版免费下载,但是还有更多个好软件站起来!在这些优质的第三方...
快手极速版领现金版本,快手极速版2019最新版领现金
厦门建发股份有限公司二O一六年度审计报告致同会计师事务所(特殊普通合伙)目录审计报告...
- 热门关注