设为首页 收藏本站
查看: 803|回复: 0

[经验分享] docker-registry的定制和性能分析

[复制链接]

尚未签到

发表于 2019-2-21 10:36:40 | 显示全部楼层 |阅读模式
  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发生的交互


  • Client向Index请求,知道从哪里下载samlba/busybox
  • Index回复:
  • samalba/busybox在RegistryA
  • samalba/busybox的checksum,所有层的token
  • Client向Registry A请求,samalba/busybox的所有层。Registry A负责存储samalba/busybox,以及它所依赖的层
  • Regsitry A向Index发起请求,验证用户/token的合法性
  • Index返回这次请求是否合法
  • Client从registry下载所有的层
  • 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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675234-1-1.html 上篇帖子: 跟我一起学docker(五)--仓库 下篇帖子: Docker machine 多主机管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表