docker index 服务概述
index 顾名思义 索引,index 服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,如下图所示,首先会去 index 服务上 做认证,然后查找镜像所在的 registry 的地址并放回给 docker 客户端,最终 docker 客户端再从 registry 下载镜像,当然在下载过程中 registry 会去 index 校验客户端 token 的合法性。不同镜像可以保存在不同的 registry 服务上,其索引信息都放在 index 服务上。
开源社区 docker 仓库 的实现,有两种运行模式
- standalone=true:在这种模式下,仓库自身提供了简单的 index 服务,在实现过程中 index 只是实现了简单的索引功能,没有实现用户认证功能
- standalone=false:在这种模式下,需要配置 index 的服务访问点,需自行实现 index 服务
index 服务对外提供的接口
index 对外提供的 REST API 接口如下:
PUT /v1/repositories/(namespace)/(repo_name)/
在 docker push 的流程中会调用到,其作用是创建一个 repository。创建之前会对用户密码以及权限进行验证,如果合法,则最终会返回一个 token 至 docker 客户端
DELETE /v1/repositories/(namespace)/(repo_name)/
删除一个 repository,删除之前会对用户密码以及权限进行验
PUT /v1/repositories/(namespace)/(repo_name)/images
在 docker push 流程中会调用到,其作用是更新 repository 对应的 image 列表,更新之前会校验携带的 token
GET /v1/repositories/(namespace)/(repo_name)/images
在 docker pull 流程中会调用到,其作用是获取 repository 对应的 image 列表。获取之前会对用户密码以及权限进行验证
PUT /v1/repositories/(namespace)/(repo_name)/auth
校验 token 的合法性
GET /v1/users/
docker login 会调用到此接口,用来验证用户的合法性
POST /v1/users/
docker login 会调用到此接口,可用来创建一个用户
PUT /v1/users/username/
用来更新用户信息
各个接口的请求的具体 Header、Action、Response,可参考 这里
index 服务已有的开源实现
https://github.com/ekristen/docker-index,采用 node js 实现,其中实现了一套简单的用户管理。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论