共计 1731 个字符,预计需要花费 5 分钟才能阅读完成。
index 顾名思义“索引”,index 服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,如下图所示,首先会去 index 服务上 做认证,然后查找镜像所在的 registry 的地址并放回给 docker 客户端,最终 docker 客户端再从 registry 下载镜像,当然在下载过程中 registry 会去 index 校验客户端 token 的合法性。不同镜像可以保存在不同的 registry 服务上,其索引信息都放在 index 服务上。
开源社区 docker 仓库 的实现,有两种运行模式
(1)standalone=true:在这种模式下,仓库自身提供了简单的 index 服务,在实现过程中 index 只是实现了简单的索引功能,没有实现用户认证功能
(2)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 实现,其中实现了一套简单的用户管理。
CentOS 6/ 7 系列安装 Docker http://www.linuxidc.com/Linux/2014-07/104768.htm
Docker 的搭建 Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htm
Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm
在 Ubuntu Trusty 14.04 (LTS) (64-bit) 安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm
Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 14.04 安装 Docker http://www.linuxidc.com/linux/2014-08/105656.htm
阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm
Docker 的详细介绍 :请点这里
Docker 的下载地址 :请点这里