Docker仓库的简单介绍
docker官方仓库:Docker Hub https://www.docker.com
Docker运行中使用的默认仓库是Docker Hub公共仓库,里面存储了各类的镜像
Docker Hub是世界上最大的容器图像存储库,包含一系列内容源,包括容器社区开发人员、开源项目和独立软件供应商在容器中构建和分发代码。用户可以访问用于存储和共享图像的免费公共存储库,也可以选择私人回购的订阅计划。
用来保存镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具有不同tag的镜像,自己创建的镜像,不仅可以在本地使用,并且可以上传到Docker仓库
用户通过编写Dockerfile,bulid创建以后生成镜像–>镜像可以用来创建容器–>容器提交给镜像,通过Push将此镜像上传到仓库中
Registry仓库工作原理
1.当用户要获取并下载镜像时
工作流程为:
1 用户发送请求到index
2 index 响应返回客户端信息:所请求的镜像在registry具体存放位置以及授权认证信息
3 用户通过响应中返回的Token和registry沟通, 所有的镜像全部存储在registry主机
4 registry现在要与index证实该token是被授权的
5 index会发送“true” 或者 “false”给registry,确定认证是否有效
6 registry将请求的镜像数据发送给客户端
2.用户要推送镜像到registry中
工作流程为:
1 用户发送带请求到index要求分配库名
2 在成功认证,命名空间可用以及库名被分配之后。index响应返回临时的token。
3 镜像连带token,一起被推送到registry中
4 registry现在要与index证实该token是被授权的
5 index会发送“true” 或者 “false”给registry,确定认证是否有效
6 然后客户端将镜像数据传送到registry指定的库中
3.用户从index或者registry中删除镜像
工作流程为:
1 index接收来自Docker一个删除库的信号。
2 如果index验证库成功,它将删除该库,并返回一个临时token
3 然后客户端前往registry,registry现在接收到带有该token的删除信号。
4 registry与index核实该token,然后删除库以及所有相关信息。
5 index会发送“true” 或者 “false”给registry,确定认证是否有效
6 Docker现在通知有关删除的index,然后index移除库的所有记录
拉取以及上传镜像
docker pull 镜像名称 # 从官方仓库拉取镜像
docker push 镜像名称 # 上传镜像到官方仓库
设置镜像加速器
一般情况下,直接从官方仓库中直接拉取镜像会比较满,可以设置设置镜像加速器,相当于一个反向代理。以阿里云为例
1.注册阿里云帐号
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
进入阿里云的镜像中心–>镜像加速器----> 得到一个进行加速取地址(这里可以看注册加速器的文档)
加速器地址为:
https://93j9d23c.mirror.aliyuncs.com
2.配置docker daemon文件
根据文档:
[root@server1 docker]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://93j9d23c.mirror.aliyuncs.com"]
}
[root@server1 docker]# systemctl daemon-reload
[root@server1 docker]# systemctl restart docker
测试加速器是否配置成功(可以联网的虚拟机):
[root@server1 docker]# docker search nginx
拉取镜像(保证本地没有该镜像):
[root@server1 docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
fc7181108d40: Pull complete
d2e987ca2267: Pull complete
0b760b431b11: Pull complete
Digest: sha256:48cbeee0cb0a3b5e885e36222f969e0a2f41819a68e07aeb6631ca7cb356fed1
Status: Downloaded newer image for nginx:latest
[root@server1 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f68d6e55e065 11 days ago 109MB