如何从docker-hub和docker-registry看优秀的后端服务设计实现

发布时间:2021-11-24 15:59:27 作者:柒染
来源:亿速云 阅读:182

本篇文章给大家分享的是有关如何从docker-hub和docker-registry看优秀的后端服务设计实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

##需求

最近因为工作需要,开始研究docker-registry的实现和服务搭建。docker-registry是啥呢?就是目前很火的容器docker的镜像存储服务端。

或者这么说把,docker干的事情就是把整个应用、操作系统、配置打包成一个静态的镜像,这个镜像可以快速的启动关闭为一个动态的运行容器。但这种能力对单个人是没有很大意义的,我们需要有个地方把镜像存下来,然后用一个url或者链接分享给其他人。

如果是你,你会怎么设计?开一个公共的FTP让大家存镜像然后分享?这是个好主意,不过……docker的镜像有这么一个设定,就是一个镜像是由多层组成的,如果每次传输全量文件,对客户端、服务端、用户启动都造成时间和流量的浪费。于是……

需求一:远程存储服务,上传和下载需要智能的识别对面有没有这层,如果两边的层的uuid一致,已经有的话,就不传了。


简单的根据名字上传下载,对人日常使用来说还不不够方便,还需要一个web界面,让人可以登陆、搜索、区分公共的镜像和私有的镜像,等等,这是人的需求,不是客户端程序的需求。

如何从docker-hub和docker-registry看优秀的后端服务设计实现

需求二:web界面,支持搜索


每个镜像层的大小约为几十M到几百M之间,可以想象,当很多人都往一个地方上传时,单个服务器的存储容量是绝对支撑不住的,需要可以水平扩展的集群,但web界面不能分开,客户端程序也不应该很麻烦的自己找去哪里下载。

如何从docker-hub和docker-registry看优秀的后端服务设计实现

需求三:支持水平扩展的集群存储


docker-hub和docker-registry的分工如下:

##docker-hub

负责保存集中的信息访问,关于

docker-hub有几个组件:

dokcer-registry

有这么几个特性

一次docker pull 或 push背后发生的事情

如何从docker-hub和docker-registry看优秀的后端服务设计实现如何从docker-hub和docker-registry看优秀的后端服务设计实现

这两个图里面index就是hub,可以看到每次客户端都要先访问index,决定镜像文件从哪个registry上传或下载,然后去相应的registry操作。从阅读源码中可以看出,在registry上,每个镜像的层都是以tar.gz格式存储的。

自己搭建docker镜像服务的考虑

既然是私服,同样需要考虑用户、安全认证、搜索等问题,可以说,docker的开发者在设计镜像服务时就考虑了这些问题,把Web这块留给每个私服的开发者自己去实现,把后端存储抽象成接口来调用。docker-registry的源代码放在这里 。为了保证后续的正常开发使用,我决定先阅读一下这个源码,不过碰上了不少问题:

最近在研究用Docker实现PaaS,欢迎大家有想法找我交流:-)

最后分析一下这个架构的优点

以上就是如何从docker-hub和docker-registry看优秀的后端服务设计实现,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. 从 Nginx 优秀的核心架构设计,揭秘其为何能支持高并发?
  2. 如何设计优秀的接口协议

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker-registry

上一篇:Java里的for (;;)与while (true)哪个更快

下一篇:Java15的新特性是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》