什么是容器注册表?

2024 年 7 月 31 日

作者

Phill Powell

Staff Writer

Ian Smalley

Senior Editorial Strategist

什么是容器注册表?

容器注册表是一个(或多个)数据存储库,用于存放容器映像以便存储和访问。容器映像是不变的静态文件,包含可执行代码并在 IT 基础架构上隔离运行。

容器注册表的一个主要优势是如何轻松连接到容器编排系统或平台,例如 Kubernetes 和 Docker。

在基于容器的应用程序开发过程中,团队还可以在 DevOps 开发运维的能力中使用容器注册表,实现与持续集成 (CI) 工作流和持续交付 (CD) 工作流的优化集成。这两个工作流是软件开发中的核心活动。CI 和 CD 都是基于自动化的,旨在适应频繁的代码更改。它们的主要区别在于 CI 为最终发布准备代码,而 CD 关注代码的实际发布。容器注册表支持这两种工作流。

容器注册表有两种类型:

  • 公共注册表具有优化数据传输和放宽访问控制的功能,但缺乏高级的安全协议。
  • 私有注册表通常用于需要更安全的操作和更严格的工作负载保护的情况。
高速公路鸟瞰图

在云端保持清醒头脑 


获取每周 Think 时事通讯,了解有关在 AI 时代优化多云设置的专家指导。

容器注册表如何工作?

容器注册表存储容器映像,允许用户将容器映像上传到容器注册表(称为“推送”的过程)或将其下载到不同的系统(称为“拉取”的过程)。

容器注册表可以单独使用,也可以与其他容器注册表结合使用。如果将多个容器组合成一个提供云服务的单一操作单元,其功能就会模拟一个生态系统,其中的“居民”紧密合作以提供共享的输出。

对象存储器

容器注册表使用对象存储来显示容器映像的元数据。尽管这提供了一种成功传输此类元数据的方法,但从本质上讲,它是有限的。例如,对于可能涉及多个映像的数据,可用的列表标签的数量可能受到限制。

依赖项容器

依赖项容器是另一种存储方式。它们可以管理、注册和解决应用程序中的依赖项。在程序设计中,依赖项描述了一个对象或过程必须先发生,另一个对象才能按顺序运行的情况。

这种依赖项由依赖项容器管理,有助于简化测试,提高可扩展性,并最大限度地减少代码耦合(被编程对象之间过于强烈的相互依赖关系)的需要,因为代码耦合可能导致错误的引入和版本控制问题。

身份验证

鉴于对在线安全的迫切和持续需求,对获准访问存储库的个人进行身份验证至关重要。这取决于容器注册表特定的一系列权限。权限定义谁有权使用来自容器注册表的计算机资源。

容器运行时

运行时的概念至关重要。容器运行时是允许容器在主机系统内运行的软件。运行时使用一系列步骤来创建容器。这些步骤涵盖了形成容器并初始化其环境的整个过程,由包含应用程序及其依赖项的容器映像引导。

容器形成后,运行时仍然积极参与 - 管理容器生命周期,跟踪其持续可行性并在不再需要时删除其资源。

负载均衡

容器注册表还支持负载均衡。在容器原生负载均衡中,均衡器流量直接路由到要接收该流量的区域。通过这种方式,容器注册表可以与负载均衡器协同工作,无需通过额外的网络回路来路由流量。

AI 学院

利用混合云实现 AI 就绪

本课程由 IBM 资深思想领袖带领,旨在帮助企业领导者获得所需的知识,以便划分可以推动增长的 AI 投资的优先级。

容器注册表的益处

容器注册表具有许多益处,其中包括:

操作清晰度

容器注册表通过提供专用位置来长期存储映像,从而提高了操作的清晰度。制作艺术家和软件开发人员经常为资产过载而苦恼。容器注册表通过将资产限制在单个位置来缓解这个问题。

简化性能

容器注册表有助于防止在不知道映像的确切位置时可能出现的性能延迟 - 特别是在高优先级期间。容器注册表通过提供可随时检查和确认的库存清单,解决了这一问题。

单一可信信息源

注册表为任何组件或应用程序创建单一可信信息源,因此该组件或应用程序的组成始终透明。使用容器注册表可确保最新的迭代可供使用或复制,从而实现最佳版本控制。

增强安全性

容器注册表具有增强的映像安全功能。访问协议有助于从安全角度保护映像。同时,漏洞扫描使用户能够深入了解其映像并发现其中隐藏的问题。

容器注册表用例

以下活动广泛使用容器注册表:

软件开发

软件开发是容器注册表的主要用例,这就是最初创建容器注册表的原因,即为软件开发人员提供一个存储、访问和共享映像的工作空间来辅助其工作。

企业版软件交付

私有容器注册表通常被视为组织在内部设计和交付软件应用程序的必要基础架构。私有容器注册表让用户对软件供应链拥有更高水平的控制能力。

微服务

许多容器注册表通过阐明在容器集群中定位和连接特定微服务的过程来帮助微服务用户。此类容器注册表提供域名系统服务,为图像提供名称和虚拟 IP。

应用程序部署

容器注册表有助于促进应用程序的快速迭代,因为容器注册表具有模块化和轻量级的特性。部署的其他优点是容器注册表的可移植性和一致性。

科学研究

容器注册表正在针对专门的科学目的进行定制,例如支持遗传学数据和支持基因组研究。研究结果可以轻松复制为其他格式,从而允许共享关键代码和工件。

Docker 和 Kubernetes

有两个主要的容器编排提供程序在容器注册表的使用中占主导地位:

Docker

Docker 是 2013 年开发和推出的容器编排系统,旨在帮助降低创建、部署和运行应用程序的复杂性。Docker 最近赢得了广泛欢迎,因为它被视为一种构建轻量级、可移植且自包含的容器的简单方法,无论何种基础设施,它都可以在任何平台上运行。这种易于使用的声誉帮助 Docker 成为那些部署专门用于人工智能 (AI)机器学习 (ML) 的应用程序的人员的首选。

出于同样的原因,Docker 容器提供了极高的可移植性,无论其基础设施如何,都可以将它们从一台计算机移动到另一台机器。我们又看到一个优点,那就是有了 Docker,在本地机器、边缘设备或云服务器等替代环境中引入 AI 和 ML 应用程序相对简单。

Kubernetes

Kubernetes开源的容器编排平台。Kubernetes 也始于 2013 年,以希腊语中的“试点”一词命名,用于自动化各种软件流程,例如管理、部署和扩展。

在 Kubernetes 服务中,一台或多台计算机(虚拟机裸机服务器)连接在 Kubernetes 集群中,可以在其中运行不同大小和类型的容器工作负载。Kubernetes 通常与 Helm chart 一起部署,Helm chart 是用于描述 Kubernetes 集群的各种资源然后将这些组合资源打包为应用程序的文件集合。

Kubernetes 支持使用容器化 ML 应用程序和简单扩展,并且支持 ML 框架和工具。Kubernetes 也可以用作 AI 训练工作负载的平台。

Docker 和 Kubernetes 在许多方面都很相似。然而,它们的规模有所不同,因为 Docker 本质上是一个容器运行时,而 Kubernetes 是一个完整的平台,旨在支持运行和管理来自多个容器运行时的容器。作为衡量两者之间差异的一个指标,请设想 Kubernetes 足够大,而 Docker 只是 Kubernetes 支持的多个容器运行时之一。

其他领先的容器注册表提供商

容器注册表提供商的市场一直在变化,随时都有参与者进入和退出市场。尽管如此,以下列出的提供商已经在这个市场上建立了持久的声誉:

  • 阿里巴巴:阿里巴巴集团以“让天下没有难做的生意”为目标。阿里云容器注册表支持同一个帐号下的实例(运营主体)之间映像的复制。阿里云容器注册表服务旨在管理映像的整个生命周期。
  • Amazon:Amazon Web Services (AWS) 运营 Amazon Elastic Container Registry (ECR),同时使用 Amazon Inspector 管理映像的漏洞扫描。ECR 还支持跨帐户和跨区域复制,从而可以更轻松地访问映像。
  • DockerHub:Docker 运行自己的映像资源,即 DockerHub,可以免费访问 Docker 用户、软件供应商和开源项目共享的 100,000 多个映像。还有付费的 Docker 容器注册表服务供私人使用。DockerHub 使用 Docker 命令行界面 (Docker CLI),可进行登录、推送和拉动等关键操作。
  • GitHub:GitHub 成立于 2007 年,现为 Microsoft 所有。该平台赢得了开发人员的广泛支持,他们赞赏其促进代码共享、协作和代码管理的能力。(需要注意的是,虽然 GitHub 经常被误认为是开源软件,但它确实是专有软件。)
  • GitLab:经常与 GitHub 混淆,GitLab 成立于 2014 年。GitLab Container Registry 是容器映像的安全私有注册表。它可以用来制作和发布映像。Gitlab Container Registry 可与开源软件一起使用。最新版本(现为 Beta 版)具有增强的排序和筛选功能。
  • Google:Google Cloud 的容器注册表“Artifact Registry”与 Google Cloud 的工具和运行时集成,并支持使用自动化管道。Google 也是 Kubernetes 的原始创作者,该项目现在通过贡献者的努力进行管理,商标由云原生计算基金会持有。现在,各共有云供应商都提供自己版本的 Kubernetes 作为托管服务。
  • IBM:IBM® Cloud Container Registry 让用户可以轻松启动自己的注册表,并开始将私有映像推送到注册表,以便与 IBM Cloud Kubernetes Service 一起使用。用户可享受拥有完全托管的自有注册表的隐私优势。该服务可以无成本地进行测试驱动,采用即用即付的定价方式,因此用户只需为其消费付费。
  • Microsoft:Microsoft 的 Azure 平台包括 Azure Container Registry (ACR),其中包含 Docker 映像和开放容器计划 (OCI) 映像,并支持 OCI 工件和 Helm chart。ACR 的连接注册表功能(该程序的高级服务层的一部分)创建一个本地或远程副本,将容器映像和 OCI 工件与基于云的 ACR 同步。ACR 可以容纳 Windows 和 Linux 映像。与计算机程序交互的一种方法是编写和输入文本行,这些文本行称为命令行。当操作系统使用这种交互方法时,它被称为包含命令行界面 (CLI)。尽管现在大多数计算机用户都依赖图形用户界面 (GUI),但 CLI 仍然受到一些人的青睐,特别是那些希望通过编写脚本来自动执行程序的人。Azure 允许用户灵活地使用流行的 Docker CLI 来运行登录、推送和拉取等关键容器映像操作。
  • Red Hat:自 1993 年成立以来,Red Hat 一直在推广基于 Linux 的编程。其容器注册表 OpenShift Container Platform (OCP) 允许用户根据需要自动访问映像存储库,并为他们提供一个标准位置来推送其应用程序构建所产生的映像。
相关解决方案
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud 是一个完全托管的 OpenShift 容器平台 (OCP)。

探索 Red Hat OpenShift
容器解决方案

容器解决方案能够运行和扩展容器化工作负载,并实现安全性、开源创新和快速部署。

深入了解容器
云咨询服务

利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。

云服务
采取后续步骤

使用 IBM 的容器解决方案实现基础架构现代化。通过使用 IBM 的综合容器平台,跨环境灵活、安全、高效地运行、扩展和管理容器化工作负载。

深入了解容器解决方案 创建免费 IBM Cloud 帐户