什么是 Linux 容器?

办公室里的两个人指着电脑屏幕。

作者

Mesh Flinders

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

什么是 Linux 容器?

Linux 容器 (LXC) 是一类基于 Linux 操作系统的容器。它们包含在各种不同的计算环境和管道中运行一个或多个特定流程所需的所有文件。

如今,Linux 容器已成为现代软件开发的核心工具,能够将应用程序及其所有依赖项轻松打包。许多现代应用程序(如  DockerKubernetesRed Hat OpenShift、Microsoft Azure 等)采用 Linux 容器,以获得更高的效率、可移植性和安全性。

与所有基于 Linux 构建的应用和软件工具一样,Linux 容器是开源的——这意味着其源代码可免费供所有人使用。Linux 容器及其众多功能作为 Linux 发行版的组成部分,由全球开发者社区共同维护和更新。

什么是 Linux?

Linux 是全球最受欢迎的开源操作系统 (OS) 之一。由 Linus Torvalds 于 1991 年发明,迅速成为 Windows 和 macOS 等专有操作系统的广泛替代方案。Linux 操作系统基于 Linux 内核构建,这个计算机程序使用户能够控制系统组件(如网络、CPU 使用率、驱动程序、文件系统等)。

自发明以来,Linux 内核已成为 Linux 发行版的关键;Linux 发行版是定期向用户发布的 Linux 操作系统的开源版本。如今,Linux 为各种现代设备和应用程序提供支持,并被世界上一些最大的科技、软件和计算公司所采用。

什么是容器?

容器是可执行的软件单元,包含应用程序代码及其库文件和依赖项,使代码能在多种生态系统中运行。容器的功能依赖多个组件实现。例如,二进制文件就是容器功能的关键组件,它使得单个文件及其应用代码能在任何计算环境中运行。

容器利用操作系统虚拟化技术,通过调用 OS 内核功能来隔离进程,并控制应用程序对 CPU、内存和磁盘空间的访问权限。相较于 虚拟机 (VM),容器具备更强的可移植性和资源效率,已成为 Netflix、Spotify、AirBnB 等现代 云原生 应用的核心技术。

辅以专家洞察分析的最新科技新闻

通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明

谢谢!您已订阅。

您的订阅将以英语提供。每份时事通讯都包含取消订阅链接。您可以在此管理您的订阅或取消订阅。更多相关信息,请参阅我们的 IBM 隐私声明

Linux 容器如何工作?

Linux 容器在采用 Linux 操作系统的单一主机上,为应用程序提供隔离运行环境。其功能核心是命令行界面(又称 shell),为用户提供控制 Linux 系统的文本交互接口。

Linux 容器与虚拟机 (VM)

Linux 容器与虚拟机 (VM) 相似之处在于:二者都是支撑云计算和现代商业应用部署的主流虚拟化方案。但仍存在重要差异值得关注。

虚拟机可以使硬件和 IT 基础设施虚拟化,而 Linux 容器仅可以实现系统的操作系统的虚拟化,使其成为运行应用程序的更轻量级和可移植的选择。此外,VM 和 Linux 容器所依赖的虚拟化方法略有不同。在 VM 中,称为虚拟机管理程序的软件组件提供了虚拟化所需的必要资源隔离;在 Linux 容器中,这是通过容器映像实现的。

Linux 容器五大核心特性

Linux 容器的五大核心特性奠定了其独特功能的基础。

1. 内核共享

虚拟机需配备独立操作系统和内核才能运行。而容器可共享宿主机的 Linux 内核,因而具有更轻量化、更快速的启动与运行特性。

2. 命名空间

Linux 容器的隔离功能利用了称为 Linux 内核命名空间的功能,来为不同进程隔离某些资源。例如,进程 ID 命名空间(PID 命名空间)用于隔离同一容器中的进程,使其不会相互影响。

3. Cgroups

Cgroups(控制组缩写)是一种资源管理工具,允许用户对进程进行层级分组,并控制其可访问的资源范围。例如,守护进程(控制容器生命周期的进程)常由 Cgroups 进行管控。

4. 容器镜像

容器映像是软件包,包含运行应用程序所需的一切,包括代码、运行时、系统库和系统工具。容器映像使其支持的应用程序具有高度的可扩展性,无需手动设置即可在任何环境中运行。

5. 容器运行时

容器运行时是一种允许容器在主机系统(例如 Linux)内运行的软件。容器运行时用于管理容器的生命周期。容器运行时使用允许应用程序相互通信的应用程序编程接口 (API),充当容器编排程序(如 Kubernetes)之间的中介,负责管理容器化应用程序及运行应用程序的主机系统。

IBM DevOps

什么是 DevOps?

Andrea Crawford 阐述了什么是开发运维、开发运维的价值,以及开发运维实践和工具如何帮助您完成从应用程序构思到生产的整个软件交付管道。本课程由 IBM 资深思想领袖主导,旨在帮助企业领导者获得所需的知识,以优先考虑能够推动增长的 AI 投资。

容器化的演变

容器化的概念自 20 世纪 70 年代就已经存在,当时 Unix 引入了一种称为 chroot 的系统。Unix 是一种流行的操作系统,它允许用户控制计算机或电子设备上的硬件和软件资源。Chroot 的独特之处在于它允许隔离系统上的进程,这对于容器技术至关重要。

尽管其他技术(如 AIX 工作负载分区和 FreeBSD 监狱)也能提供类似容器的进程隔离与系统虚拟化功能,但均未实现同等程度的广泛采用。2013 年开源容器管理平台 Docker 的推出,彻底奠定了容器在现代应用生态中的主导地位,使容器的创建、管理和部署变得前所未有的便捷。

容器在现代应用程序市场的主导地位怎么强调都不为过,尤其是对于云原生和微服务应用程序而言。根据最近的一份报告,去年全球容器市场估值为 58.5 亿美元。预计未来 5 年,该值将以 33% 的复合年增长率 (CAGR) 增长。1

应用程序容器和 Linux 容器 (LXC)

应用程序容器是运行单个进程和工作负载的容器,使用户能够创建和删除容器而不影响其他进程或应用程序功能。应用程序容器(尤其是 Docker)对于当今众多用户所依赖的应用程序(例如 Facebook、MS Word、Zoom 等)的蓬勃发展至关重要。虽然存在较新的开源 Linux 内核技术,例如 Ubuntu 和 system-nspawn,但 Linux 容器仍在广泛使用且有很多优点。

Linux 容器优势

作为开源项目,Linux 容器在全球开发者社区的推动下持续演进,不断新增功能并优化用户体验。其核心优势包括:

  • 资源分享:与需要另一个单独的操作系统实例才能运行的虚拟机不同,Linux 容器共享主机系统的内核,从而使其在许多计算环境中更高效、更易于移植。
  • Linux 集成:凭借与 Linux 内核的深度集成,容器相比 VM 和虚拟机监控程序等其他虚拟化技术,能实现更高效的资源利用。
  • 按需调配和自动扩展:Linux 容器启动时间短、资源需求低,因此非常适合按需调配自动扩展,这也是云和混合云环境的主要功能。
  • 提高安全性:Linux 容器通过隔离和资源控制提供增强的安全功能。对于在 Linux 发行版上发布和更新的各个 Linux 进程,也存在特定于任务的安全模块。一个例子是 AppArmor,这是一种 Linux 内核安全模块,用于限制进程在容器内的运行方式。
  • 开销优化:通过允许单个主机系统和操作系统同时运行多个容器,Linux 容器最大化了资源利用率和可扩展性。Linux 容器的这一特性显著降低了运行多个并行操作系统的开销(这是许多其他虚拟化技术的必备要求)。
  • 强化编排能力:容器编排(通常通过 Kubernetes 实现)可自动化 Linux 容器的部署与扩缩容等管理流程。Linux 容器提供精细化的容器控制,使开发者能更轻松地协调和管理大规模容器化应用的部署。

Linux 容器用例

由于其众多特性和优势以及 Linux 开源发行版模型的成功,Linux 容器已部署在许多行业并拥有许多用例。以下是一些最受欢迎的。

微服务架构

微服务架构是一种云原生 软件开发方法,通过将单个应用拆分为更小的独立组件构建。因其高速性、可扩展性和灵活性,该方案已被广泛应用于众多软件开发环境。

Linux 容器是微服务架构的理想载体,开发者可便捷地部署独立微服务,并通过协同工作构建大型复杂应用。

DevOps 与 CI/CD

DevOps 开发运维和持续整合/持续交付 (CI/CD) 是软件开发人员用来实现软件开发和交付自动化的一系列实践。

Linux 容器通过以下重要方式强化 DevOps 和持续集成/持续交付 (CI/CD)。首先,确保 CI/CD 全流程中生产环境的一致性,使软件发布时功能符合预期。 

其次,自动化应用的构建、测试和部署任务,帮助开发者节省时间和资源。最后,相比其他虚拟化技术更轻量化,助力 DevOps 团队降低 IT 基础设施成本以按时完成项目。

混合和多云环境

大多数现代企业需要在混合的私有公有云平台上部署核心业务应用程序,这种方法被称为混合云架构。

Linux 容器凭借其可移植性和资源利用效率,成为融合公有云与私有云的混合云环境的理想选择。它们能提升混合云环境运行效能,显著增强应用性能,并最大限度降低运营成本。

应用程序现代化

作为正在进行的数字化转型计划的一部分,许多企业需要开发和改进其应用程序的功能,不断寻求新的技术和工具为其带来市场优势。

根据 IBM 商业价值研究院的调查,83% 的高管已将应用程序现代化作为其业务战略的核心。Linux 容器通过采用基于旧版代码和基础设施构建的应用程序并隔离其依赖关系和要求来加速这一工作,以便它们能够轻松有效地在现代环境中部署。

相关解决方案
IBM Instana Observability

利用 AI 和自动化的强大功能,主动解决整个应用程序堆栈中的问题。

深入了解 IBM Instana Observability
DevOps 解决方案

使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。

探索 DevOps 解决方案
云咨询服务

通过我们的云咨询服务持续实现应用现代化,加速业务敏捷性与增长——支持任意平台部署。

深入了解我们的云咨询服务
采取后续步骤

从 IBM Instana® 的主动问题检测到跨堆栈实时洞察,让云原生应用程序保持高可靠运行。

了解 IBM Instana 探索 DevOps 解决方案
脚注

1. 应用程序市场规模和趋势(2024 年),Grandview Research,2024 年