文前说明
作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。
本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。
1. 概述
- 仓库(Registry)是集中存储镜像的一种工具。
- Docker 官方仓库为 Docker Hub(https://hub.docker.com)
- 配置国内中国科学技术大学的 Docker 镜像仓库,Docker 1.12 + 版本只需要修改 daemon.json 配置文件,重启 Docker 即可。
[root@localhost docker]# cat daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
2. 原理
Registry 的组成
- Docker Registry 有 3 个角色,分别是 Index、Registry 和 Registry Client。
- Index 主要负责管理 Docker Private Registry 的用户信息以及认证权限,保存记录和更新用户信息(包括操作记录),以及镜像校验信息。
- Index 主要由 控制单元、鉴权模块、数据库、健康检查模块、日志系统 组成。
- Registry 是镜像仓库,由 S3、云文件和本地文件系统提供数据库支持。
- 通过 Index 的鉴权模块的 Token 方式 进行身份认证。
- Docker 充当 Registry Client 负责维护、推送和拉取的任务,以及客户端的授权。
- Index 主要负责管理 Docker Private Registry 的用户信息以及认证权限,保存记录和更新用户信息(包括操作记录),以及镜像校验信息。
Registry 的工作流程
- 客户端推送镜像到 Registry 时,需要 Index 认证,通过后返回一个 Token,将 Token 提交给 Registry,Registry 再询问 Index 令牌是否正确,正确的情况下向用户开放权限允许推送。
- 删除镜像时,Registry 收到 Registry Client 删除请求,向 Index 确认,确认无误后,Index 删除镜像元数据,Registry 删除存储的镜像。
- 一些第三方公开仓库,匿名拉取镜像时,也是通过鉴权模块发放匿名口令实现拉取。
3. 仓库的基础操作
操作 | 说明 |
---|---|
login | 登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。 |
logout | 登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub。 |
pull | 从镜像仓库中拉取或者更新指定镜像。 |
push | 将本地的镜像上传到镜像仓库,需要先登陆到镜像仓库。 |
search | 从 Docker Hub 查找镜像。 |
网友评论