docker创建私有仓库(Registry)

  • 什么是仓库
  • Docker仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
  • Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
  • Docker Hub
  • docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库。
  • 可以通过在https://cloud.docker.com/网站注册账号,来创建公有仓库,再通过在docker主机上登录来上传或者下载镜像。
  • 私有仓库的优点
  • docker hub虽然方便,但是还是有限制
  • 需要internet连接,速度慢
  • 所有人都可以访问
  • 由于安全原因企业不允许将镜像放到外网
    所以要构建企业私有仓库(Registry)

Registry工作原理

  • docker pull 或 push过程
    在这里插入图片描述
    index服务主要提供镜像索引以及用户认证的功能。当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载像,在下载过程中 registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。

  • Docker Registry有三个角色,分别是index、registry和registry client。

  • index:负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息:Web UI、元数据存储、认证服务、符号化

  • registry:是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证

  • Registry Client:Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

  • 用户要获取并下载镜像

  • 用户发送请求到index来下载镜像。

  • index 响应返回三个相关部分信息:该镜像位于的registry、该镜像包括所有层的校验、以授权目的Token。

  • 用户通过响应中返回的Token和registry沟通,registry全权负责镜像,它存储基本的镜像和继承的层。

  • registry现在要与index证实该token是被授权的。

  • index会发送“true” 或者 “false”给registry,由此允许用户下载所需要的镜像。

  • 用户要推送镜像到registry中。

  • 用户发送带证书请求到index要求分配库名。

  • 在成功认证,命名空间可用以及库名被分配之后。index响应返回临时的token。

  • 镜像连带token,一起被推送到registry中。

  • registry与index证实token,然后在index验证之后开始读取推送流。

  • 该index然后更新由Docker生成的镜像校验。

  • 用户要从index或registry中删除镜像。

  • index接收来自Docker一个删除库的信号。

  • 如果index验证库成功,它将删除该库,并返回一个临时token

  • registry现在接收到带有该token的删除信号。

  • registry与index核实该token,然后删除库以及所有相关信息

  • Docker现在通知有关删除的index,然后index移除库的所有记录。

实验

  • 在虚拟机上上网,要先确保虚拟机可以上网
    在这里插入图片描述
  • 实验时先注册一个阿里云账号,并获取镜像的加速器地址
    在这里插入图片描述
  • 将加速器地址写入配置文件中
    在这里插入图片描述
  • 重新加载配置文件并重启docker
    在这里插入图片描述
  • 实验前先查看并确定已经存在的镜像
    在这里插入图片描述
  • 将registry2镜像加载到docker中,配置私有库
    在这里插入图片描述
  • 先清空当前docker正在运行的状态
    在这里插入图片描述
  • 后台运行registry容器,并指定映射的端口5000
    在这里插入图片描述
  • 查看5000端口是否开启
    在这里插入图片描述
  • 重命名本地镜像
    本地镜像在命名时需要加上仓库的ip和端口
    在这里插入图片描述
  • 上传本地镜像到仓库
    在这里插入图片描述
  • 先安装tree,再查看docker树
    在这里插入图片描述
    在这里插入图片描述
  • 检测镜像是否可用
    在这里插入图片描述
    在这里插入图片描述
  • 将本地镜像删除
    在这里插入图片描述
    在这里插入图片描述
  • 拉取镜像
    在这里插入图片描述
  • 将镜像重新命名为本地的镜像
    在这里插入图片描述
  • 删除拉取的原来的镜像
    在这里插入图片描述
  • 给私有库添加证书
    因为这样的话私有库任何人都可以访问,不安全,所以我们要增加库的安全性
  • 创建服务端的key以及证书
    在这里插入图片描述
    在这里插入图片描述
  • 添加本地解析
    在这里插入图片描述
    在这里插入图片描述
  • 删除本地docker正在运行的registry
    在这里插入图片描述
  • 创建仓库并指定443端口,以及开机自启和认证信息
    在这里插入图片描述
  • 查看443端口是否开启
    在这里插入图片描述
  • 创建证书存放目录,并复制证书
    在这里插入图片描述
  • 将本地镜像重命名
    在这里插入图片描述
  • 上传镜像
    在这里插入图片描述
  • 重新开启一个虚拟机并做测试
  • 安装docker
    在这里插入图片描述
  • 开启docker
    在这里插入图片描述
  • 创建存放证书的路径,并将srver1上生成的证书复制到该目录下
    在这里插入图片描述
  • 添加解析
    在这里插入图片描述
  • 拉取镜像测试
    在这里插入图片描述
  • 配置用户权限 ,给证书加密
    如果想要控制registry的使用权限,使其只有在登录用户名和密码之后才能使用的话,还需要做额外的设置。registry的用户名密码文件可以通过htpasswd来生成
  • 创建用户和密码
    在这里插入图片描述
  • 将已经在运行的registry删除
    在这里插入图片描述
  • 创建私有库
    在这里插入图片描述
  • 登录私有库
    在这里插入图片描述
  • 在文件config.json 中可以看到记录的认证(认证一次,永久保存)
    在这里插入图片描述
  • 将本地镜像重命名并上传(必须是登录状态才可上传)
    在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值