docker-index
• Web UI
• Meta-data 元数据存储(附注、星级、公共库清单)
• 访问认证
• token管理

docker-registry
• 存储镜像、以及镜像层的家族谱系
• 没有用户账户数据
• 不知道用户的账户和安全性
• 把安全和认证委托给docker-hub来做,用token来保证传递安全
• 不需要重新发明轮子,支持多种存储后端
• 没有本地数据库

后端存储
• 因为镜像最终是以tar.gz的方式静态存储在服务端
• 适用于对象存储而不是块存储
• registry存储驱动
• 官方支持的驱动有文件、亚马逊AWS S3、ceph-s3、Google gcs、OpenStack swift,glance
一次docker pull发生的交互

  1. Client向Index请求,知道从哪里下载samlba/busybox
  2. Index回复:
  3. samalba/busybox在RegistryA
  4. samalba/busybox的checksum,所有层的token
  5. Client向Registry A请求,samalba/busybox的所有层。Registry A负责存储samalba/busybox,以及它所依赖的层
  6. Regsitry A向Index发起请求,验证用户/token的合法性
  7. Index返回这次请求是否合法
  8. Client从registry下载所有的层
  9. registry从后端存储中获取实际的文件数据,返给Client
    搭建私有镜像库的方案

    上面的index,registry,后端存储3者都是可选的。registry分0.9的python版实现和2.0版的go实现。

认证和权限
如果镜像库不直接提供给用户使用,仅仅是私有PaaS的一部分,可以不用index组件,直接上registry就行。index的开源实现包括docker-registry-web,docker-registry-frontend。支持较好的是马道长的wharf。

后端存储
我们环境使用的是网易的内部的对象存储NOS,类似于S3。其他的方案没用过,如果要自己搭,可能靠谱的是ceph-s3。如果在公网环境或者已经购买了公有云服务,可以考虑自己实现一个registry-对象存储的驱动。

集群和分布式
registry本身是无状态的,可以水平扩展,然后在前面做ngix的负载均衡。
性能分析
v1协议 vs v2协议

做了性能对比测试,同样为docker1.6,v2协议比v1协议快5-6%左右,基本可以忽略不计。

单次pull和push的性能分析
层|docker push|curl put :-----|:----- layer1|34s|4.3s layer2|325s|44.6s
层|docker pull|curl get :-----|:----- layer1|42s|20.8s layer2|2s|1.4s
经过对比测试,单次docker pull和push的最大耗时在客户端,也可以观察到每次做docker pull和push的时候系统CPU占用率都在100%。也就是说50%以上的时间花在本地做的压缩、计算md5等操作。

并发分析
并发测试的结果是在一个2核2G内存的registry-0.9服务器,直接用文件存储,大约能负载50个docker client的并发。如果换用对象存储的后端,估计10个docker client的并发就是极限了。在这方面registry-2.0的并发能力更强,但对内存消耗更大。

Q&A
问:2.0的性能也没什么变化啊,优势在哪里? 答:客户端优化有限,在超过100个节点同时pull一个镜像时,2.0服务端资源占用少。
问:服务端的并发瓶颈在哪里? 答:服务端的代码还没做过更多的分析,从经验判断主要还是IO,python的内存占用比较多。
问:考虑过多机房image存储CDN没? 答:这个还真没考虑过,目前我们的镜像服务是个内部PaaS平台用的,只要保证集群所在机房能快速访问就行。
问:那还不如每机房加缓存? 答:是的,也可以考虑registry的mirror机制,用了mirror后可以一个点push,其他点pull。
问:你们的调度器是自己开发的吗? 答:我们底层用的是Kubernetes,调度器做一定的修改,主要是为了保证多个可用域。
问:内部的PaaS有没有做资源限制、网络隔离? 答:有,目前我们的Docker是跑在kvm上。
问:昨天网易好多服务断片了,据说是网络×××,那这些服务有跑在Docker上吗? 答:呵呵,断片是因为BGP的核心交换机问题,我也很好奇是什么引起的,目前还没有组织和个人声称对此事负责。
问:有没有考虑过nova-docker? 答:社区不是很活跃,我们没有采用这个方案,但对于中小公司来说这是最快的方案。
问:为啥不考虑自己实现调度器? 答:忙不过来,我们也想做啊,这个放在后面实现。
问:我们准备在某公有云上跑Docker集群。 答:先这么用呗,我觉得Docker的优势就是底层平台无关,今后换了底层迁移也没有那么困难。

如果尚在犹豫,为什么不先行动起来?华为云容器,企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。
https://www.huaweicloud.com/product/cce.html

转载于:https://blog.51cto.com/13831707/2135036

docker-registry的定制和性能分析相关推荐

  1. docker内php使用xdebug性能分析

    官方文档 Xdebug: Documentation » Profiling 以下操作都以macbook环境为例 docker内php安装xdebug pecl install xdebug dock ...

  2. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  3. Docker的使用(四:Docker Registry本地私有仓库搭建知识点总结)

    任务一: Docker Registry本地私有仓库搭建 1.启动Docker Registry: 2.重命名镜像: 3.推送镜像: 4.浏览器查看验证: 5.文件查看验证: 任务二:Docker R ...

  4. 独家揭秘!阿里大规模数据中心的性能分析

    阿里妹导读:数据中心已成为支撑大规模互联网服务的标准基础设施.随着数据中心的规模越来越大,数据中心里每一次软件(如 JVM)或硬件(如 CPU)的升级改造都会带来高昂的成本.合理的性能分析有助于数据中 ...

  5. mysql工具使用意义_MySQL性能分析、及调优工具使用详解

    本文汇总了MySQL DBA日常工作中用到的些工具,方便初学者,也便于自己查阅. 先介绍下基础设施(CPU.IO.网络等)检查的工具: vmstat.sar(sysstat工具包).mpstat.op ...

  6. Linux常用性能分析工具汇总

    文章目录 性能分析工具 top pstree mpstat vmstat pidstat perf proc tcpdump bcc工具箱 cachestat cachetop memleak fil ...

  7. 独家揭秘!阿里大规模数据中心的性能分析 1

    2019独角兽企业重金招聘Python工程师标准>>> 阿里妹导读:数据中心已成为支撑大规模互联网服务的标准基础设施.随着数据中心的规模越来越大,数据中心里每一次软件(如 JVM)或 ...

  8. 阿里大规模数据中心性能分析

    郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化.CCF 系统软件专委和软件工程专委的委员.曾主持国家自然科学基金面上项目.入选上海市浦江人才计划A类.获得 ACMS ...

  9. 键值数据库LevelDB的优缺点及性能分析

    导读:LevelDB是一种为分布式而生的键-值数据库. 作者:廖环宇 张仕华 来源:大数据DT(ID:hzdashuju) 01 LevelDB的特性 LevelDB是一个C++语言编写的高效键-值嵌 ...

最新文章

  1. RxJava初入学习(一)之Gifts-for-designers
  2. mongodb,redis,mysql简要对比
  3. redis:RDM连接阿里云redis服务器
  4. 按作用域分的话 php的变量可分为,mysql全局变量表
  5. SAP CRM One Order OB,OW和DB buffer的调用关系图
  6. 2021-07-27-jeesite学习笔记
  7. 独家下载!小程序Serverless云上开发一站到底
  8. 科技驱动未来:飞康如何赢得尤尼克斯的青睐?
  9. 放下十样东西,你会更优秀!
  10. 头歌c语言答案循环结构,C语言的“汤头歌”
  11. 虚拟机VMware10安装中标麒麟6 NeoKylin Linux Desktop Release 6
  12. 通过无线网络实现两台计算机共享打印机共享,同一WiFi环境中两台电脑共享打印机技巧方法...
  13. umail for linux,U-Mail邮件系统 for CentOS(6.X) x64
  14. 源码分析RocketMQ顺序消息消费实现原理
  15. 到2020年,烟台重点林区视频监控率将达90%以上
  16. MySQL数据查询(可视化界面 MySQL Workbench)
  17. 独家对话徐翔妻子:我为什么起诉离婚
  18. 怎么压缩图片,压缩图片轻松搞定
  19. eWebEditor的使用方法
  20. java ocr文字识别软件_Java文字识别软件-调用百度ocr实现文字识别

热门文章

  1. 用简单的C语言实现多任务轮流切换(模拟操作系统线程机制)【转】
  2. ArrayList, LinkedList , Vector
  3. 开源中国iOS客户端学习——(一)Prefix.pch文件
  4. 【C++基础学习】C++中的引用
  5. 2010.2--netscreen ssg 140 恢复出厂设置的方法
  6. WebClient.UploadValues Post中文乱码的解决方法
  7. 2007.04.26
  8. python虚拟环境
  9. oracle00214,oracle添加控制文件,ORA-00214: 错误
  10. mysql 去掉复合索引_MySQL性能优化[实践篇]-复合索引实例