docker-registry的定制和性能是怎样的
本篇内容主要讲解“docker-registry的定制和性能是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“docker-registry的定制和性能是怎样的”吧!
在成都网站制作、做网站中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。创新互联建站专业成都网站建设10年了,客户满意度97.8%,欢迎成都创新互联客户联系。
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协议
客户端 | push总时间 | pull总时间 |
---|---|---|
registry-0.9 | 388.1 | 80.9 |
registry-2.0 | 368.4 | 76.1 |
做了性能对比测试,同样为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的优势就是底层平台无关,今后换了底层迁移也没有那么困难。
到此,相信大家对“docker-registry的定制和性能是怎样的”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本文标题:docker-registry的定制和性能是怎样的
当前路径:http://scyanting.com/article/gheiji.html