分享

Docker入门教程(四)Docker Registry

本帖最后由 nettman 于 2015-1-7 23:05 编辑
问题导读
1.什么是Docker Registry?
2.Docker Registry有哪些角色?分别是什么?











【编者的话】DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,Docker Registry是Docker中的重要组件,本文通过情景的方式对其进行了介绍,图文并茂,推荐。

在Docker系列教程的上一篇文章中,我们讨论了Dockerfile的重要性并提供了让自动构建镜像更容易的一系列Dockerfile的命令。在这篇文章中,我们将介绍一个重要的Docker组件:Docker Registry。它是所有仓库(包括共有和私有)以及工作流的中央Registry。在我们深入Docker Registry之前,先让我们去看看一些常见的术语和仓库相关的概念。
  • Repositories(仓库)可以被标记为喜欢或者像书签一样标记起来
  • 用户可以在仓库下评论。
  • 私有仓库和共有仓库类似,不同之处在于前者不会在搜索结果中显示,并且也没有访问它的权限。用户设置为合作者才能访问私有库。
  • 成功推送之后配置webhooks

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

角色 1 -- Index

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

这也分解了较长的URL,以方便使用和验证库的拥有者。

角色 2 --Registry

registry是镜像和图表的仓库。然而,它不具有本地数据库以及不提供用户认证,由S3、云文件和本地文件系统提供数据库支持。此外,通过Index Auth service的Token的方式进行认证。Registries可以有不同的类型。我们来分析其中的几个:
  • Sponsor Registry:第三方的registry,供其客户和Docker社区使用。
  • Mirror Registry:第三方的registry,只让客户使用。
  • Vendor Registry:由分发Docker镜像的供应商提供的registry。
  • Private Registry:通过与防火墙和额外的安全层的私有实体提供的registry。

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

Docker Registry工作流程详解现在,让我们讨论五种情景模式,以便更好地理解Docker Registry。

情景A:用户要获取并下载镜像。所涉及的步骤如下:
  • 用户发送请求到index来下载镜像。
  • index 响应返回三个相关部分信息:
    • 该镜像位于的registry
    • 该镜像包括所有层的校验
    • 以授权目的Token > 注意:当请求header里有X-Docker-Token时才会返回Token。而私人仓库需要基本的身份验证,对于公有库它不是强制性的。
  • 用户通过响应中返回的Token和registry沟通,registry全权负责镜像,它存储基本的镜像和继承的层。
  • registry现在要与index证实该token是被授权的。
  • index会发送“true” 或者 “false”给registry,由此允许用户下载所需要的镜像。


d801c6374f0e20c9902338b068618e13.png

情景B:在用户想要推送镜像到registry中。涉及的步骤如下:
  • 用户发送带证书请求到index要求分配库名。
  • 在成功认证,命名空间可用以及库名被分配之后。index响应返回临时的token。
  • 镜像连带token,一起被推送到registry中。
  • registry与index证实token,然后在index验证之后开始读取推送流。
  • 该index然后更新由Docker生成的镜像校验。

f86f077fe4ce78f8829532070effc481.png
情景C:用户想要从index或registry中删除镜像:
  • index接收来自Docker一个删除库的信号。
  • 如果index验证库成功,它将删除该库,并返回一个临时token。
  • registry现在接收到带有该token的删除信号。
  • registry与index核实该token,然后删除库以及所有相关信息。
  • Docker现在通知有关删除的index,然后index移除库的所有记录。

01fc34b06b8e36f5fc292e1d86590a7a.png

情景D:用户希望在没有index的独立模式中使用registry。
使用没有index的registry,这完全由Docker控制,它最适合于在私有网络存储镜像。registry运行在一个特殊的模式里,此模式限制了registry与Docker index的通信。所有的安全和身份验证需要用户自己注意。

情景E:该用户想要在有index的独立模式中使用registry。
在这种情况下,一个自定义的index会被创建在私有网络里来存储和访问镜像。然而,通知Docker有关定制的index是耗时的。 Docker提供一个有趣的概念chaining registries,从而,实现负载均衡和为具体请求而指定的registry分配。在接下来的Docker教程系列中,我们将讨论如何在上述每个情景中使用Docker Registry API ,以及深入了解Docker Security。


相关文章




Docker入门教程(二)命令

Docker入门教程(三)DockerFile

Docker入门教程(五)Docker安全

Docker入门教程(六)另外的15个Docker命令

Docker入门教程(七)Docker API

Docker入门教程(八)Docker Remote API



欢迎加入about云群90371779322273151432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条