文章目录
1.什么是Docker 仓库
- 仓库是集中存放镜像文件的场所。有时候会把
仓库
和仓库注册服务器(Registry)
混为一谈,并不严格区分。 - 实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的
标签(tag)
。 - 仓库分为
公开仓库(Public)
和私有仓库(Private)
两种形式。最大的公开仓库是Docker Hub
,存放了数量庞大的镜像供用户下载。 - 国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问。
- 当然,用户也可以在本地网络内创建一个私有仓库。
- 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库。 这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上pull 下来就可以了。
- 在Docker Hub上上传镜像
在docker hub 上创建自己的仓库
1.注册账号
创建仓库
此时在官方的仓库中,已经创建了一个位置,接下就可以把自己的镜像push到仓库中
上传镜像到仓库中之前,需要login 登陆
上传镜像之前,在vyao将镜像的名字改为 用户名/镜像名 的形式,在执行push命令,把镜像上传到docker hub仓库中。
2. 私有仓库registry的优势
(1)节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可
(2)提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
Docker官方提供的工具docker-registry可以用于构建私有的镜像仓库。
3.Registry的工作原理
Index服务主要提供镜像索引
以及用户认证
的功能
- 当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端
- docker客户端再从registry下载镜像,在下载过程中 registry会去index校验客户端token的合法性
- 不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上
Docker Registry有三个角色,分别是index
、registry
和registry client
(1)index
负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
Web UI
元数据存储
认证服务
符号化
(2)registry
是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
(3)Registry Client
Docker充当registry客户端来维护推送和拉取,以及客户端的授权。
4.创建私有仓库以及上传本地镜像到私有仓库当中
Docker 官方已经把仓库封装为镜像,直接通过启动容器就可以完成部署仓库,导入registry镜像
(1)拉取私有仓库的镜像
[root@server1~]# docker search registry
[root@server1~]# docker pull registry
(2)基于镜像运行registry容器
registry容器内的数据卷目录为/var/lib/registry/