Docker仓库
1. 仓库简介
- Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
- Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
2. docker hub
2.1 概念
- docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
2.2 搭建私有仓库
2.2.1 注册docker hub账户
- 首先在https://hub.docker.com/网站注册一个账号
- 在docker hub上新建一个公共仓库
官网注册后,可以新建一个仓库,类似于github建立仓库!
2.2.2 上传镜像
- 接下来要从docker主机上传镜像,首先需要登录:
[root@server1 ~]# docker login
Username: yakexi007
Password: <填写密码>
- docker hub为了区分不同用户的同名镜像,要求镜像的格式是:[username]/xxx.tag
# docker tag busybox:latest yakexi007/busybox:latest
- 上传镜像到docker hub
# docker push yakexi007/busybox:latest
2.3 简单的本地仓库搭建
[root@server1 ~]# docker search registry
[root@server1 ~]# docker pull registry
[root@server1 ~]# docker images registry
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 678dfa38fcfa 5 weeks ago 26.2MB
[root@server1 ~]# docker history registry:latest
[root@server1 ~]# docker run -d --name registry -p 5000:5000 -v /opt/registry:/var/lib/registry registry ##-v指定本机的vulome卷位置,挂载宿主机路径到容器内
[root@server1 ~]# docker images
[root@server1 ~]# netstat -antlp ##查看5000端口
[root@server1 ~]# ll /opt/registry/
total 0
[root@server1 ~]# tree /opt/registry/
##上传镜像
[root@server1 ~]# docker tag webserver:v4 localhost:5000/webserver:latest ##修改tag标签信息
[root@server1 ~]# docker images
[root@server1 ~]# docker push localhost:5000/webserver
[root@server1 ~]# tree /opt/registry/
[root@server1 ~]# curl localhost:5000/v2/_catalog
{"repositories":["webserver"]}
上传资源
3. Registry 工作原理
- Docker Registry有三个角色,分别是index、registry和registry client。
- index
- 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
- Web UI
- 元数据存储
- 认证服务
- 符号化
- registry
是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
- Registry Client(docker)
Docker充当registry客户端来维护推送和拉取,以及客户端的授权。
- 三者运作的核心
- index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,
- 首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给
- docker客户端,docker客户端再从registry下载镜像,在下载过程中 registry
- 会去index校验客户端token的合法性,不同镜像可以保存在不同的registry
- 服务上,其索引信息都放在index服务上。
分析三种情况,其实都是一样的运作方式
情景A:用户要获取并下载镜像。
情景B:用户要推送镜像到registry中。
情景C:用户要从index或registry中删除镜像。