在框架内思考:容器用例、示例和应用

2024 年 2 月 29 日

阅读时长5 分钟

容器管理有着悠久的历史。过去几十年里,管理容器化环境相对轻松。现代的计算机容器概念最早可追溯到 20 世纪 70 年代,当时人们首次尝试用容器来界定 Unix 系统上的应用程序代码。

现代容器化技术日臻成熟,与早期的技术相比有了长足的进步。如今,当公司运行容器时,能够更有效地利用其投资,获得更高的回报。无论是小型的初创公司还是大型的成熟企业,容器框架都展现出了强大的能力,能够创建高效、运行时优化且支持持续交付的工作流程

什么是容器?

容器是软件的可执行单元,其中打包了应用程序代码及其库和依赖项。它们以标准化方式打包,因此代码可以在任何地方运行,包括桌面、传统 IT 或云上。

容器利用某种形式的操作系统 (OS) 虚拟化实现,其中可以使用操作系统内核的功能(例如,Linux 命名空间和 cgroup、Windows 孤岛和作业对象)来隔离进程,并控制这些进程可以访问的 CPU、内存和磁盘数量。

容器和 Docker

2013 年,随着 Docker 的推出,容器技术发生了根本性的改变。此后十多年来,容器技术风靡全球,普及度和用户认可度不断攀升。显然,Docker 的迅速崛起和如今在市场上的绝对优势地位充分表明,过去的市场对这种容器化软件有着强烈但未得到满足的需求。

IBM 于 2021 年开展的一项调查显示,61% 的受访者表示,他们在过去 2 年内构建的新应用程序中至少有 50% 使用了容器。更大一部分受访者 (64%) 表示,他们在未来 2 年内构建的应用程序中,预计至少有 50% 会使用容器。

容器主要用来分发和保护数据以及运行应用程序。因此,IT 行业成为容器化软件的主要用户群体是顺理成章的。以下三个领域从中获益最为显著

  1. 机器学习
  2. 软件开发
  3. 人工智能 (AI)

Docker 和 Kubernetes

目前,容器应用市场主要由两个实体主导:

Docker

Docker 是最常用的容器化平台。Docker 容器诞生于 2013 年,基于 Docker Engine 构建而成,并通过应用程序编程接口 (API) 运行。Docker 实际上是一种平台即服务 (PaaS),其主要优势在于灵活性。Docker 可以将任何应用程序及其相关依赖项转化为虚拟容器,而该容器可以在任意 Windows、macOS 或 Linux 计算机上运行。系统会使用 Docker 映像(用于构建容器的只读模板)和 Dockerfile(Docker 映像随附的说明性文本文件)。Docker 映像和其他容器映像都需要一定的运行空间。这由容器运行时来管理,容器运行时是一种软件解决方案,用于与操作系统交互以便为运行容器映像腾出必要的空间。

Kubernetes

Kubernetes 是最常用的容器编排平台。该平台由 Google 于 2014 年创建,而且至今仍备受欢迎,因为它拥有强大的功能,可帮助自动部署软件、实现可扩展性并支持容器管理。此外,Kubernetes 是一个开源系统,吸引了众多热情的贡献者,这些贡献者如今也是该项目的监督者,而且每个软件提供商都根据自身需求创新运用 Kubernetes。例如,对于某些服务,用户不仅可以创建 Kubernetes 集群,还可以部署可扩展的 Web 应用程序并分析日志。

Docker 和 Kubernetes 是迄今为止使用最为广泛的计算机容器处理工具。根据最新的 2024 年容器化市场预测(ibm.com 外部链接),Dockers 目前占据了该市场 82.8% 的份额,而 Kubernetes 占据了 11.52% 的市场份额。

要了解有关 Kubernetes 和 Docker 关系的更多信息,请查看“Kubernetes 与 Docker:为什么不能兼用?

容器用例

云容器相关的用例有很多,因为它们在云计算环境或生态系统中变得越来越重要。 在为应用程序和工作负载选择通用云计算平台时,云容器已成为关键考虑因素。许多组织甚至考虑使用容器来替代虚拟机 (VM)。但在这个非常广泛的范围内,一些关键的用例特别适合使用云原生容器:

  • 微服务:容器小巧轻便且可移植,因此成为微服务架构的理想选择。在此类架构中,容器化应用程序由许多松散耦合且可独立部署的小型服务组成。当计算机上使用多个虚拟机时,虚拟机管理程序用于监督微服务操作。
  • DevOps:微服务架构和容器平台的结合,为许多选择 DevOps 和开发环境来处理软件开发的团队提供了一个坚实的共同基础。
  • 混合云和多云:由于容器可以在任何地方(笔记本电脑、本地环境和云环境)一致地运行,因此它们是云提供商以及任何混合云多云场景的理想底层架构,在这些场景中,企业会在多个不同的公有云私有云以及本地数据中心内开展运营。
  • 无服务器:无服务器让专注于创建应用程序的云原生开发人员无需考虑服务器需求和约束,这些都由后台自动处理。无服务器方法的一个主要优势在于,它能帮助开发者在构建应用程序时保持专注,不必被繁琐的底层细节所分心。

相关用例和解决方案

容器、容器化或容器编排也影响了以下相关解决方案:

  • 应用程序现代化和迁移:应用程序现代化最常见的方法之一是首先优化应用程序并将其容器化,为最终迁移到云架构做好准备。此过程应在创建应用程序代码(即包含该应用程序所有指令的源代码)之前进行。
  • 独立容器:独立容器能很好地帮助微服务用户,因此得到了广泛应用。顾名思义,独立容器主要用于帮助更好地组织微服务,允许用户将“拥挤的”容器的不同方面保存在多个分区的容器中。独立容器还能快速、方便地进行必要的更新,从而提高运行效率。
  • 多租户:多租户是一种独立的架构体系,围绕一组用户(称为租户)构建,这些用户在一个共享环境中运行同一个应用程序。多租户系统可能会提供一些自定义选项,但为了保持系统简单且易于操作,故意对这些选项进行了限制。容器可以很好地管理多租户部署,因为多个应用程序可以在同一个主机上运行。

容器类型

容器可分为两种基本类型,每种类型支持的容器技术有所不同:

系统容器

系统容器也称为“操作系统容器”,可让您同时运行多个不同进程。系统容器非常适合用于管理传统应用程序和处理旨在执行单一功能的单体式应用程序,这种应用程序通常表现为单一逻辑可执行文件。这类容器还可用于托管运行 VM 所需的架构、配置和工具。作为默认措施,系统容器会禁止分层文件系统。

支持的容器技术:BSD Jails、Linux VServer、LXC、OpenVZ、Solaris Zones

应用容器

不同于系统容器可以同时执行多个进程,应用容器的功能比较单一。顾名思义,应用容器仅用于执行一项可执行操作,从而服务单一应用程序。应用容器的目的是封装和运行单个服务,不支持分层文件系统。

支持的容器技术:Docker、Rocket

IBM 和容器

要实现容器化,需要付出一些额外的努力并投入一些资源,但最终会带来回报。无论您的产品处于其生命周期的哪个阶段,容器编排工具都可为您的生产环境带来更轻松的容器体验。

IBM 的容器服务基于 Kubernetes 等开源技术打造,能助您轻松快捷地迁移到云端,同时确保安全高效。

作者

Phill Powell

Staff Writer