Docker仓库原理与管理工具
一、docker原生仓库
仓库原理
Docker模型的核心部分是有效的利用分层镜像机制,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。不同的Docker容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。由于最终镜像最终是以tar.gz的方式静态存储在服务器端,这种存储适用于对象存储而不是块存储。
使用docker pull 拉取镜像的流程图
- 客户端向索引请求ubuntu镜像下载地址
- 索引回复:ubuntu所在仓库A、 ubuntu镜像的校验码(Checksum)和所有层的Token
- 客户端向仓库A请求 ubuntu的所有层(仓库A负责存储ubuntu,以及它所依赖的层)
- 仓库A向索引发起请求,验证用户Token(client发送请求到认证服务器签署token,请求信息中包含的基本身份验证信息将于服务器中的用户列表做匹配,然后根据请求中的scope要操作的范围、方法进而进行匹配,最后服务器匹配成功后将token进行签名,并且将token返回给客户端。)的合法性
- 索引返回这次请求是否合法
- 客户端从仓库下载所有的层,仓库从后端存储中获取实际的文件数据,返给客户端。(Client尝试与registry连接(这次带了token信息),registry接到请求后验证token,继而开始pull/push操作。)
二、docker私有仓库工具
1、protus
Portus(by SUSE)是用于 Docker Registry API(v2)的开源前端和授权工具,最低要求registry版本是 2.1。它可以作为授权服务器和用户界面。
优点:
1. 安全:Portus 实现了最新的Docker Registry中定义的新的授权方案。它允许对你所有的镜像进行细颗粒度控制,你可以决定哪个用户和团队可 push/pull 镜像。
2. 轻松管理用户: 在 Portus 映射你的公司,可以定义任意数量的 Team,并从 Team 添加和移除用户。Team 有三种类型的用户:Viewers ,只能 pull 镜像;Contributors,可以 push/pull 镜像;Owners,类似 contributors,但可以从 team 添加或移除用户。
3. 搜索: Portus 提供你的私人注册表的内容的预览,同时有一个快速搜索镜像的功能。
4. 审计: 用户的所有相关事件都会被Portus自动记录,并可被管理员进行用户分析。
5. 支持对接到AD/LDAP。
2、harbor
Project Harbor是由VMware公司中国团队为企业用户设计的Registry server开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。
优点:
1. 可以实现 images 的私有存储。
2. 支持日志统计。
3. 支持基于角色的访问控制(Role Based Access Control)。
4. 支持创建多项目。
5. 提供了管理UI界面,并原生支持中文。
6. 支持AD/LDAP集成。
功能:以管理员(admin/Harbor12345)登入登出registry、 创建项目、 创建用户test、 以test身份pull/push 镜像、 搜索功能、 日志审计功能