资讯专栏INFORMATION COLUMN

Flux7 Docker 系列教程(四):Registry & Workflows

用户83 / 2704人阅读

摘要:本系列教程翻译自,系列共有九篇,本文译自第四篇。由三个部分组成。由发布镜像的供应商提供的。通过多重安全检查进行认证的私有。用于进行和的操作,同时用于时的登录认证。收到删除信号和。通知已经删除,删除数据库中的所有相关的记录。

  

本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第四篇 Part 4: Registry & Workflows。
该系列所有文章将参考其他学习资料翻译,也会加入自己的学习作为部分注解。如有错误,欢迎指正。

上篇文章介绍了使用 Dockerfile 进行自动化部署和 Dockerfile 的常用命令,本篇文章来探讨 Docker Registry。类似 GitHub,Docker Registry 是用来存储 Docker 镜像的地方。了解 Docker Registry 之前先来了解几个相关的知识吧。

镜像和仓库和 GitHub 一样,可以被收藏和被 “star”。

和 GitHub 一样,可以在仓库上面留评论以便和维护人员进行交流。

和 Github 类似私人仓库不能被搜索到,只有拥有合作者、拥有者权限的用户才能访问。

推送成功之后可以配置 webhook。

Docker Registry 由三个部分组成:Index、Registry、Registry Client。

  

可以把 Index 认为是负责登录、负责认证、负责存储镜像信息和负责对外显示的外部实现,而 Registry 则是负责存储镜像的内部实现,而 Registry Client 则是 Docker 客户端。

Docker Hub 架构 Docker Index

Docker Index 使用以下工具来维护用户信息、校验镜像、以及维护公共 namespace:

网页界面

元数据存储

认证服务

令牌化

同时 Docker Index 也用来分解 URL,方便用户认证和用户使用。

Registry

Registry 用来存储镜像和统计数据。然而它不会提供数据库服务,即它不会提供用户认证服务,由 S3、云文件和本地文件系统提供数据库支持。另外,由 Index 通过 Token 进行用户认证。有多种不同的 Registry,下面是其中几个的例子:

Sponsor Registry 第三方 Registry,为客户和 Docker 社区提供服务。

Mirror Registry 第三方 Registry,只为客户提供服务。

Vendor Registry 由发布 Docker 镜像的供应商提供的 Registry。

Private Registry 通过多重安全检查进行认证的私有 Registry。

Registry Client

用于进行 pull 和 push 的操作,同时用于 docker push 时的登录认证。

为了更好地理解 Registry Client 的工作流程,下面将详细描述一下五个案例中的 Docker Registry 工作流程。

情景 A:从官方仓库 Pull 镜像

用户对 Index 发出下载请求

Index 返回以下三个部分的信息:

镜像所在的 Registry。

镜像所有的层的校验

认证之后的 Token

用户使用 Token 和 Registry 进行通信,Registry 负责存储镜像和叠加在镜像上面的改动层。

Registry 确认是否是 Index 所发出的的 Token。

Index 返回确认值,由此判断用户是否可以下载镜像。
>只有在请求的 header 里有 X-Docker-Token 时才会返回 Token。私有仓库需要认证,而公有仓库不需要认证。

情景 B:Push 镜像到 Registry

用户向 Index 发送凭证,并要求分配 repository 名称。

认证 namespace 的可用性后,分配 repository 名称,同时 Index 返回一个临时 Token。

向 Registry 发送 Token 和镜像。

Registry 向 Index 确认 Token,确认完毕之后读取推送流。

Index 更新相关的镜像信息。

情景 C:从 Index 和 Registry 删除一个镜像

Index 收到 delete 某个 repository 的请求。

进行 repository 认证和用户认证,成功后 Index 给客户端返回一个临时 Token。

Registry 收到删除信号和 Token。

Registry 向 Index 验证 Token,然后删除对应的镜像文件。

Registry 通知 Index 已经删除,Index 删除数据库中的所有相关的 repository 记录。

情景 D:在没有 Index 的情况下使用 Registry

没有 Index 的 Registry 是完全受 Docker Clinet 控制的。这种模式最适合在私有网络中存储镜像文件。Registry 运行在一个和 Index 没有通信的环境中,所有的认证问题和安全问题都需要用户自己解决。

情景 E:在有 Index 的独立模式中使用 Registry

在这种情况下,用户需要自己架设一个 Index 去解决存储和认证问题。当然,这种情况下可能会出现和官方 Index 时间不同步的问题。Docker 官方也提供了一个非常有意思的东西叫做 chaining registries,主要是为了解决负载均衡和为具体请求指定具体的 Registry。
当然,我们可以参考 自己搭建本地 Docker Hub 服务 来搭建本地的 Docker Hub。。

接下来的文章中将会继续介绍如何在以上每个场景中使用 Docker Registry API,并且也会深入了解 Docker 安全。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7915.html

相关文章

  • Flux7 Docker 系列教程):Registry & Workflows

    摘要:本系列教程翻译自,系列共有九篇,本文译自第四篇。由三个部分组成。由发布镜像的供应商提供的。通过多重安全检查进行认证的私有。用于进行和的操作,同时用于时的登录认证。收到删除信号和。通知已经删除,删除数据库中的所有相关的记录。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第四篇 Part 4: Registry & Workflo...

    dackel 评论0 收藏0
  • Docker 系列教程,Part 8: Docker Remote API

    摘要:注这篇文章是系列教程中的一篇,本篇文章由发布,原文地址在前面的文章中,作为正在进行的教程系列的一部分,我们讨论了。这个系列的其他教程 注:这篇文章是系列教程中的一篇,本篇文章由 Flux7 Labs 发布,原文地址 Docker Tutorial Series, Part 8: Docker Remote API 在前面的文章中,作为正在进行的 Docker 教程系列的一部分...

    姘搁『 评论0 收藏0
  • Flux7 Docker 系列教程(七):Docker API

    摘要:本系列教程翻译自,系列共有九篇,本文译自第七篇。取出镜像层插入镜像层检索镜像检索镜像的根镜像获取指定库的所有标签获取指定库的指定标签删除标签状态检查是为设计的。同时也允许操作相关的用户仓库和仓库。 本系列教程翻译自 Flux7 Docker Tutorial Series,系列共有九篇,本文译自第七篇 Part 7: Ultimate Guide for Docker APIs。...

    Scholer 评论0 收藏0

发表评论

0条评论

用户83

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<