docker 私有仓库– registry

文章目录

    • Registry 简介
        • Registry功能
        • 重要组件–Registry API
        • 鉴权机制–Auth Server
        • Registry主要特点
      • registry 搭建

Registry 简介

Registry是一个存放镜像的仓库,它通常被部署在互联网服务器或者云端。
假如我们在公司将一个软件的运行环境制作成镜像,并上传到Registry中,这时就可以很方便地在家里的笔记本上,或者在客户的生产环境上直接从Registry上下载并运行了。当然,对Registry的操作也是与Docker完美融合的,用户甚至不需要知道Registry的存在,只需要通过简单的Docker命令就可以实现下载运行操作。
Docker公司提供的官方Registry叫Docker Hub,这上面提供了大多数常用软件和发行版的官方镜像,还有无数个人用户提供的个人镜像。其实,Registry本身也是一个单独的开源项目,任何人都可以下载后自己部署一个Registry。因为免费的Docker Hub功能相对简单,所以多数企业会选择自己部署Docker Registry后二次开发,或者购买功能更强大的企业版Docker Hub。
从使用来讲,Registry旨在实现镜像的创建、存储、分发和更新等功能。

Registry功能

镜像存储:
镜像数据存储在Registry后端,与本地镜像存储方式类似,它也分隔成了多个镜像层,放置在各自的目录中,保存成tar包格式。除了镜像数据,Registry还保存了清单文件(manifest)和镜像签名文件(signature)等。
镜像创建、分发和更新:
本地用户和Registry之间通过Registry API传输镜像。Registry API即一系列HTTP/HTTPS请求,用来发送用户请求到Registry,并接收Registry的响应。在请求和响应中则包含了镜像数据交互。

重要组件–Registry API

Registry API用于Registry和DockerEngine之间的通信,实现Registry镜像分发,是DockerRegistry的重要组成部分。用户对Registry的访问,包括镜像上传、下载、查询和删除等操作,都是通过向Registry发送一系列API请求来实现的。Registry API语句由方法(Method)、路径(Path)和实体(Entity)组成。它负责接收engine的访问请求,实现对Registry后端实体的操作,写入或获取数据及状态。API传输的对象主要包括镜像layer的块数据(blob)和表单(Manifest)
表单(Manifest):是JSON格式的文件,记录镜像的元数据信息,并兼容V1版本镜像信息
表单Manifest的内容形式如下:

docker  私有仓库-- registry

在镜像上传过程中,带有鉴权功能的整个上传过程描述如下:
首先,用户发起上传请求,请求通过Docker Engine,依照Registry API协议发送给Registry。Engine试图赋给HTTP请求一个鉴权的token;如果没有token,daemon会试图更新(refresh/fetch)一个新的token。请求中包含了一系列的REST API方法(如PUT、GET、DELETE、POST、PATCH等)。因为push和pull的行为包含了这样一组方法,所以在Registry作为HTTP server运行的时候,就会通过方法注册的回调机制来判断方法所对应的后面的资源(digest描述的对象)是不是和从token解析出来的参数匹配。
第二步,如果用户请求没有做过认证并且请求中不带token,则Registry将会返回401 Unauthorized状态,并告诉用户端Auth Server地址,要求用户去认证。
第三步,用户带着Registry返回的信息以及用户证书去访问Auth Server(地址包含在返回信息中)申请token
第四步,Auth Server后端账户系统记录着用户名和密码,获取到当前访问用户的名字和密码后,依照JWT格式生成带有鉴权信息的token返回给用户。密码以密文方式保证安全性,解密通过bcrypt算法,实现平台通常提供了相应的函数库。Auth Server可以通过灵活设计接口来提供一个或者多个认证源,包括基本的本地认证(basic auth),以及第三方账户认证。
第五步,用户带着获取的token再次访问Registry,头信息包含关键字Authorization
第六步,Registry校验token,校验对象包括:Auth Server域名得到Registry认可;token标示符是唯一的;token在有效期;token中访问对象信息和用户访问匹配。校验成功后用户上传获得鉴权,开始上传。

Registry主要特点

快速上传和下载镜像;
部署方便;
后端支持多种分布式云存储方案(如s3、azure)和本地文件系统等,接口以插件方式存在,易于配置;
拥有完善镜像缓存机制,镜像下载更加快捷。
以Webhook方式实现的通知系统;
实现了本地TLS,支持HTTPS安全访问;
有可配置的认证模块;
有健康检查模块;
正在努力让用于管理镜像的清单和摘要文件格式更加清晰,以及更清楚地为镜像打标签;
设计方案新颖且高性能;
清单文件(Manifest)作为元数据完整地记录镜像信息;

registry 搭建

1、下载仓库镜像

docker  私有仓库-- registry

4、镜像打标签 (必须设置)

docker  私有仓库-- registry

测试:
删除镜像

docker  私有仓库-- registry

步骤:
1: 下载registry镜像 ,简化版的 字符终端,测试环境常用registry
2: 客户端设置daemon.jsp文件 指定私有仓库位置
3: 生成registry容器,开放5000端口
4: 镜像打标签 docker tag 源镜像名 仓库IP:端口/镜像名
5: 上传镜像 docker push 仓库IP:端口/镜像名
6: 下载镜像 docker pull —> docker images 查看

生产环境中常用harbor 私有仓库,有图形化界面 不常用registry

来源:中o诚

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月20日
下一篇 2020年3月20日

相关推荐