容器是软件的可执行单元,其中打包了应用程序代码及其库和依赖项。它们以标准化方式打包,因此代码可以在任何地方运行,包括桌面、传统 IT 或云上。
容器利用某种形式的操作系统 (OS) 虚拟化实现,其中可以使用操作系统内核的功能(例如,Linux 命名空间和 cgroup、Windows 孤岛和作业对象)来隔离进程,并控制这些进程可以访问的 CPU、内存和磁盘数量。
2013 年,随着 Docker 的推出,容器技术发生了根本性的改变。此后十多年来,容器技术风靡全球,普及度和用户认可度不断攀升。显然,Docker 的迅速崛起和如今在市场上的绝对优势地位充分表明,过去的市场对这种容器化软件有着强烈但未得到满足的需求。
IBM 于 2021 年开展的一项调查显示,61% 的受访者表示,他们在过去 2 年内构建的新应用程序中至少有 50% 使用了容器。更大一部分受访者 (64%) 表示,他们在未来 2 年内构建的应用程序中,预计至少有 50% 会使用容器。
容器主要用来分发和保护数据以及运行应用程序。因此,IT 行业成为容器化软件的主要用户群体是顺理成章的。以下三个领域从中获益最为显著:
目前,容器应用市场主要由两个实体主导:
Docker 是最常用的容器化平台。Docker 容器诞生于 2013 年,基于 Docker Engine 构建而成,并通过应用程序编程接口 (API) 运行。Docker 实际上是一种平台即服务 (PaaS),其主要优势在于灵活性。Docker 可以将任何应用程序及其相关依赖项转化为虚拟容器,而该容器可以在任意 Windows、macOS 或 Linux 计算机上运行。系统会使用 Docker 映像(用于构建容器的只读模板)和 Dockerfile(Docker 映像随附的说明性文本文件)。Docker 映像和其他容器映像都需要一定的运行空间。这由容器运行时来管理,容器运行时是一种软件解决方案,用于与操作系统交互以便为运行容器映像腾出必要的空间。
Kubernetes 是最常用的容器编排平台。该平台由 Google 于 2014 年创建,而且至今仍备受欢迎,因为它拥有强大的功能,可帮助自动部署软件、实现可扩展性并支持容器管理。此外,Kubernetes 是一个开源系统,吸引了众多热情的贡献者,这些贡献者如今也是该项目的监督者,而且每个软件提供商都根据自身需求创新运用 Kubernetes。例如,对于某些服务,用户不仅可以创建 Kubernetes 集群,还可以部署可扩展的 Web 应用程序并分析日志。
Docker 和 Kubernetes 是迄今为止使用最为广泛的计算机容器处理工具。根据最新的 2024 年容器化市场预测(ibm.com 外部链接),Dockers 目前占据了该市场 82.8% 的份额,而 Kubernetes 占据了 11.52% 的市场份额。
要了解有关 Kubernetes 和 Docker 关系的更多信息,请查看“Kubernetes 与 Docker:为什么不能兼用?”
云容器相关的用例有很多,因为它们在云计算环境或生态系统中变得越来越重要。 在为应用程序和工作负载选择通用云计算平台时,云容器已成为关键考虑因素。许多组织甚至考虑使用容器来替代虚拟机 (VM)。但在这个非常广泛的范围内,一些关键的用例特别适合使用云原生容器:
容器、容器化或容器编排也影响了以下相关解决方案:
容器可分为两种基本类型,每种类型支持的容器技术有所不同:
系统容器也称为“操作系统容器”,可让您同时运行多个不同进程。系统容器非常适合用于管理传统应用程序和处理旨在执行单一功能的单体式应用程序,这种应用程序通常表现为单一逻辑可执行文件。这类容器还可用于托管运行 VM 所需的架构、配置和工具。作为默认措施,系统容器会禁止分层文件系统。
支持的容器技术:BSD Jails、Linux VServer、LXC、OpenVZ、Solaris Zones
不同于系统容器可以同时执行多个进程,应用容器的功能比较单一。顾名思义,应用容器仅用于执行一项可执行操作,从而服务单一应用程序。应用容器的目的是封装和运行单个服务,不支持分层文件系统。
支持的容器技术:Docker、Rocket
要实现容器化,需要付出一些额外的努力并投入一些资源,但最终会带来回报。无论您的产品处于其生命周期的哪个阶段,容器编排工具都可为您的生产环境带来更轻松的容器体验。
IBM 的容器服务基于 Kubernetes 等开源技术打造,能助您轻松快捷地迁移到云端,同时确保安全高效。