纵欢1.v1最火的一句,纵欢免费阅读
DouJia 2025-05-08 12:30 51 浏览
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
相关推荐
-
- 最火的游戏破解软件(最火的游戏破解软件是什么)
-
国内最大的几个破解单机游戏网站是游侠网3DMGame游民星空等这些网站通常会提供破解版的单机游戏供用户下载但需要提醒的是最火的游戏破解软件,破解游戏涉及到侵犯游戏开发商的知识产权问题最火的游戏破解软件,因此是不合法的行为下面是对这个问题的详...
-
2025-07-07 07:30 DouJia
-
- 20最火电视剧排行榜前十名,最火的电视剧排名2025
-
古装剧排名2025年4月国色芳华豆瓣78分,商贾千金自立自强故事,演员妆造和演技出色仙台有树豆瓣71分,古装仙侠剧,剧情有趣但cp感和演技稍弱千朵桃花一世开豆瓣70分,古装仙侠剧,女主表现讨喜,剧情中规中矩雁回时豆瓣68分,复仇剧,剧情紧凑...
-
2025-07-07 00:30 DouJia
-
- 女生最火的头像图片,女生最火头像 可爱
-
欧美头像女生微笑表情头像大全小清新头像 高清无水印版请+微信公众号搜索"bizhi7"加关注。 微信头像个性网【www.meiniba.com】整理发布。...
-
2025-07-06 21:30 DouJia
-
- 最火的电视剧2025排行古装(最火的古装剧2021)
-
近年来最火的电视剧2025排行古装,电视剧行业蓬勃发展最火的电视剧2025排行古装,宫斗、戏说、言情、玄幻等铺天盖地,已经让古装剧和历史正剧成了判然有别的两个概念。虽然二者的故事背景都有一定的历史基础,但前者大多基以“架空历史”,或片面抽象...
-
2025-07-06 14:30 DouJia
-
- 七夕歌曲最火的十首歌,七夕歌曲最火的十首
-
七夕歌曲最火的十首下个路口见七夕雨启程遇见值得天冷就回来至少还有七夕歌曲最火的十首你唯一七夕情人节情非得已1下个路口见清新的风格七夕歌曲最火的十首,灵动的旋律,跳跃的音符下个路口见让你享受“雨中踢踏”的小浪漫让你在繁忙的世俗中放松下来,好好...
-
2025-07-06 07:30 DouJia
-
- 关于什么游戏最好玩2025最火的手游的信息
-
1白夜极光白夜极光是一款画风十分精美的回合制闯关游戏白夜极光根据光灵的属性颜色和技能特性组合队伍什么游戏最好玩2025最火的手游,在棋盘上通过同色连线指挥光灵战斗极具张力的设计风格什么游戏最好玩2025最火的手游,包容多元角色形象,满足多样...
-
2025-07-06 00:30 DouJia
-
- 百度热搜
- 新浪热搜
- 1 习近平向美国匹克球访华团回复口信
- 2 新 央视曝光零差评背后猫腻
- 3 热 王毅这句话的含金量还在飙升
- 4 热浪来袭 如何做好防护
- 5 新 女网红海边徒手捡起致命鸡心螺
- 6 热 舅舅回应16个外甥连续5年来过暑假
- 7 新 为何用医保个人账户买药价格更高
- 8 热 特朗普回应马斯克成立美国党:荒谬
- 9 731部队原成员:我解剖过300多人
- 10 新 明德物业回应青岛大学宿管离世
- 最新抖音
-
抖音安装包apk下载(抖音安装包apk下载苹果)
1、1打开抖音抖音安装包apk下载,点击下载将APP下载到手机中2在下载过程中抖音安装包apk下载,...
下载官方抖音2020最新版本免费,抖音下载免费最新版
苹果CCH基础版5.0企业版5开微信稳定原创包最新下载地址 【CCH5.0基础企业版】...
抖音头像图片大全(养生抖音头像图片大全)
加入我们群抖音头像图片大全:461268508有问题抖音头像图片大全?直接提抖音头像图片大全!...
安装抖音极速版本,抖音极速版下载2024最新版安装不了怎么办
中国火力发电网讯抖音极速版下载2024最新版安装不了怎么办: 据外媒报道,国际金融公司(Int...
抖音下载最新版本2022极速版下载不了怎么办的简单介绍
1、1检查手机存储空间是否足够抖音极速版要存储空间抖音下载最新版本2022极速版下载不了怎么办,手机...
抖音国际版无法连接网络,抖音国际版无法连接网络什么原因
tiktok抖音国际版连上网的方法如下,1拔掉手机卡,连接并切换至需要目标地区的网络2在手机里的设置...
抖音外卖抽点多少,外卖抽点怎么算
新鲜食材 象牙蚌 象拔蚌产自于加拿大太平洋以西抖音外卖抽点多少...
下载官方抖音2020最新版本免费,抖音下载最新版本免费安装
简评抖音下载最新版本免费安装:上线直接获得VIP1抖音下载最新版本免费安装的等级,疯狂抢红包...
- 最新快手
-
下载快手app并安装(下载快手app并安装到桌面)
在电脑上安装快手app下载快手app并安装的步骤如下打开软件市场下载快手app并安装,搜索快手软件并...
快手下载视频,快手下载视频怎么去除快手标志
打开“快手”app在关注页或者发现页里,找到快手下载视频你想下载的那个超有趣的视频,点进去看看详情然...
小米快手关注页面显示格式怎么调整,小米快手关注页面显示格式怎么调
空气污染的治理是一个长期的过程小米快手关注页面显示格式怎么调,虽然我国已经颁布了制定了多条关于空...
快手极速版苹果,苹果手机怎么下载快手并安装
快手极速版苹果我快手极速版苹果的世界手机版小僵尸在哪里?我的世界手机版小僵尸怎么打?小编给大...
包含快手下载安装2022最新版本快乐抖音火山的词条
一性质不同1快手快手快手下载安装2022最新版本快乐抖音火山的前身快手下载安装2022最新版本快...
快手小店怎么提现到银行卡,快手小店怎么提现
相信大家对五效蒸馏器非常的陌生快手小店怎么提现,开篇之前小编为大家科普一下五效蒸馏器快手小店怎么...
快手极速版正版2025,快手极速版正版
正品3m口罩PM2.5口罩是指能有效过滤PM2.5微粒快手极速版正版的口罩快手极速版正版,口罩的...
快手极速版app免费下载,快手极速版app免费下载_快手
什么叫做进销存快手极速版app免费下载?进销存是指企业管理过程中采购(进)—>入库(存)—...
- 热门关注