容器注册表是一个(或多个)数据存储库,用于存放容器映像以便存储和访问。容器映像是不变的静态文件,包含可执行代码并在 IT 基础架构上隔离运行。
容器注册表的一个主要优势是如何轻松连接到容器编排系统或平台,例如 Kubernetes 和 Docker。
在基于容器的应用程序开发过程中,团队还可以在 DevOps 开发运维的能力中使用容器注册表,实现与持续集成 (CI) 工作流和持续交付 (CD) 工作流的优化集成。这两个工作流是软件开发中的核心活动。CI 和 CD 都是基于自动化的,旨在适应频繁的代码更改。它们的主要区别在于 CI 为最终发布准备代码,而 CD 关注代码的实际发布。容器注册表支持这两种工作流。
容器注册表有两种类型:
容器注册表存储容器映像,允许用户将容器映像上传到容器注册表(称为“推送”的过程)或将其下载到不同的系统(称为“拉取”的过程)。
容器注册表可以单独使用,也可以与其他容器注册表结合使用。如果将多个容器组合成一个提供云服务的单一操作单元,其功能就会模拟一个生态系统,其中的“居民”紧密合作以提供共享的输出。
容器注册表使用对象存储来显示容器映像的元数据。尽管这提供了一种成功传输此类元数据的方法,但从本质上讲,它是有限的。例如,对于可能涉及多个映像的数据,可用的列表标签的数量可能受到限制。
依赖项容器是另一种存储方式。它们可以管理、注册和解决应用程序中的依赖项。在程序设计中,依赖项描述了一个对象或过程必须先发生,另一个对象才能按顺序运行的情况。
这种依赖项由依赖项容器管理,有助于简化测试,提高可扩展性,并最大限度地减少代码耦合(被编程对象之间过于强烈的相互依赖关系)的需要,因为代码耦合可能导致错误的引入和版本控制问题。
鉴于对在线安全的迫切和持续需求,对获准访问存储库的个人进行身份验证至关重要。这取决于容器注册表特定的一系列权限。权限定义谁有权使用来自容器注册表的计算机资源。
运行时的概念至关重要。容器运行时是允许容器在主机系统内运行的软件。运行时使用一系列步骤来创建容器。这些步骤涵盖了形成容器并初始化其环境的整个过程,由包含应用程序及其依赖项的容器映像引导。
容器形成后,运行时仍然积极参与 - 管理容器生命周期,跟踪其持续可行性并在不再需要时删除其资源。
容器注册表还支持负载均衡。在容器原生负载均衡中,均衡器流量直接路由到要接收该流量的区域。通过这种方式,容器注册表可以与负载均衡器协同工作,无需通过额外的网络回路来路由流量。
容器注册表具有许多益处,其中包括:
容器注册表通过提供专用位置来长期存储映像,从而提高了操作的清晰度。制作艺术家和软件开发人员经常为资产过载而苦恼。容器注册表通过将资产限制在单个位置来缓解这个问题。
容器注册表有助于防止在不知道映像的确切位置时可能出现的性能延迟 - 特别是在高优先级期间。容器注册表通过提供可随时检查和确认的库存清单,解决了这一问题。
注册表为任何组件或应用程序创建单一可信信息源,因此该组件或应用程序的组成始终透明。使用容器注册表可确保最新的迭代可供使用或复制,从而实现最佳版本控制。
容器注册表具有增强的映像安全功能。访问协议有助于从安全角度保护映像。同时,漏洞扫描使用户能够深入了解其映像并发现其中隐藏的问题。
以下活动广泛使用容器注册表:
软件开发是容器注册表的主要用例,这就是最初创建容器注册表的原因,即为软件开发人员提供一个存储、访问和共享映像的工作空间来辅助其工作。
私有容器注册表通常被视为组织在内部设计和交付软件应用程序的必要基础架构。私有容器注册表让用户对软件供应链拥有更高水平的控制能力。
容器注册表有助于促进应用程序的快速迭代,因为容器注册表具有模块化和轻量级的特性。部署的其他优点是容器注册表的可移植性和一致性。
容器注册表正在针对专门的科学目的进行定制,例如支持遗传学数据和支持基因组研究。研究结果可以轻松复制为其他格式,从而允许共享关键代码和工件。
有两个主要的容器编排提供程序在容器注册表的使用中占主导地位:
Docker 是 2013 年开发和推出的容器编排系统,旨在帮助降低创建、部署和运行应用程序的复杂性。Docker 最近赢得了广泛欢迎,因为它被视为一种构建轻量级、可移植且自包含的容器的简单方法,无论何种基础设施,它都可以在任何平台上运行。这种易于使用的声誉帮助 Docker 成为那些部署专门用于人工智能 (AI) 和机器学习 (ML) 的应用程序的人员的首选。
出于同样的原因,Docker 容器提供了极高的可移植性,无论其基础设施如何,都可以将它们从一台计算机移动到另一台机器。我们又看到一个优点,那就是有了 Docker,在本地机器、边缘设备或云服务器等替代环境中引入 AI 和 ML 应用程序相对简单。
Kubernetes 是开源的容器编排平台。Kubernetes 也始于 2013 年,以希腊语中的“试点”一词命名,用于自动化各种软件流程,例如管理、部署和扩展。
在 Kubernetes 服务中,一台或多台计算机(虚拟机或裸机服务器)连接在 Kubernetes 集群中,可以在其中运行不同大小和类型的容器工作负载。Kubernetes 通常与 Helm chart 一起部署,Helm chart 是用于描述 Kubernetes 集群的各种资源然后将这些组合资源打包为应用程序的文件集合。
Kubernetes 支持使用容器化 ML 应用程序和简单扩展,并且支持 ML 框架和工具。Kubernetes 也可以用作 AI 训练工作负载的平台。
Docker 和 Kubernetes 在许多方面都很相似。然而,它们的规模有所不同,因为 Docker 本质上是一个容器运行时,而 Kubernetes 是一个完整的平台,旨在支持运行和管理来自多个容器运行时的容器。作为衡量两者之间差异的一个指标,请设想 Kubernetes 足够大,而 Docker 只是 Kubernetes 支持的多个容器运行时之一。
容器注册表提供商的市场一直在变化,随时都有参与者进入和退出市场。尽管如此,以下列出的提供商已经在这个市场上建立了持久的声誉:
Red Hat OpenShift on IBM Cloud 是一个完全托管的 OpenShift 容器平台 (OCP)。
容器解决方案能够运行和扩展容器化工作负载,并实现安全性、开源创新和快速部署。
利用 IBM 的云咨询服务发掘新功能并提升业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加快数字化转型并优化性能。