集装箱化

什么是容器化?

容器化是一种交付软件代码的方法,它将所有必要元素组合成一个包,可以在不同类型的基础设施之间轻松移动。容器中包括运行应用程序所需的程序库、依赖项和框架。这种容器使应用程序不受周围环境的影响,并能在不同基础设施环境之间完全移植。容器化与虚拟化有关,但对某些类型的工作负载有优势。

集装箱化的优势

容器从主机操作系统中抽象出来,只能有限地访问底层资源。这使得它比完整的虚拟机更轻量级,但具有很强的可移植性和灵活性。容器可以运行在不同类型的基础设施上,如裸机服务器、虚拟机内或云中。代码可以更方便地从本地系统传输到云端或在不同操作系统之间传输。

由于无需启动整个虚拟机,因此开销较少,而且由于内核是共享的,因此无需为每个容器加载单独的操作系统。容器化的高效率使其非常适合交付现代应用程序所需的微服务。由于容器是隔离的,它们之间可以保持安全,因为任何恶意破坏或代码冲突都无法在它们之间转移。与完整的虚拟机相比,这种隔离没有那么彻底,但可以最大限度地减少威胁。快速部署意味着在出现问题时,可以快速停止和重启容器。

容器化示例

在交付软件服务的整个生命周期中,容器化有很多用途。

  • 在本地容器中构建的应用程序,在开发过程中转移到生产基础架构时,将以相同的方式运行。
  • 传统代码可以在容器中运行,从而消除对传统硬件的依赖,使其能够在不同类型的基础设施之间轻松移动,例如从内部服务器移动到云中。
  • 安全至关重要的服务,如托管金融交易的服务,可以通过容器提供,从而随着需求的增加实现更快、更安全的可扩展性。
  • 汽车计算中,向互联软件定义的汽车提供的微服务可以通过容器化以轻量级、动态和安全的方式交付,例如通过云中的BlackBerry QNX 。

容器化如何运作

容器化可在本地或基于云的基础设施之上运行。后者将部署共享操作系统,并在其上安装容器引擎,例如 Docker 或 Google Kubernetes 引擎。这将协调托管的容器,每个容器由一个或多个应用程序和必要的依赖关系组成。无论作为主机的计算环境如何,该容器都能可靠运行,因为它不依赖其资源。

容器可以包含整个或多个应用程序,但也可以采用模块化方法来交付复杂的应用程序。这可以分成模块,每个模块都在各自的容器中运行,这就是所谓的微服务方法。虽然容器通常是孤立的,但它们可以通过定义明确的通道相互通信。由于容器的轻量级特性,它们可以根据需要及时启动,而不是一直运行下去,继续消耗资源。

容器化与虚拟化

容器化与虚拟化经常被提及。两者关系密切,但采用的方法略有不同。虚拟化模拟整个物理硬件,包括 CPU 内核、内存、存储甚至 GPU 加速,并在其中运行客户操作系统。容器化不模拟硬件,只模拟操作系统。因此,多个应用程序可以共享同一个操作系统内核。在实践中,容器和完整虚拟机的作用可能类似。后者提供了更大的资源隔离,而容器化的轻量级方法则在有利于快速动态部署的地方提供了优势。无论作为主机的计算环境如何,该容器都能可靠地运行,因为它不依赖其资源。

容器可以包含整个或多个应用程序,但也可以采用模块化方法来交付复杂的应用程序。这可以分成模块,每个模块都在各自的容器中运行,这就是所谓的微服务方法。虽然容器通常是孤立的,但它们可以通过定义明确的通道相互通信。由于容器的轻量级特性,它们可以根据需要及时启动,而不是一直运行下去,继续消耗资源。