什么是容器化?
集装箱化的优势
容器从主机操作系统中抽象出来,只能有限地访问底层资源。这使得它比完整的虚拟机更轻量级,但具有很强的可移植性和灵活性。容器可以运行在不同类型的基础设施上,如裸机服务器、虚拟机内或云中。代码可以更方便地从本地系统传输到云端或在不同操作系统之间传输。
由于无需启动整个虚拟机,因此开销较少,而且由于内核是共享的,因此无需为每个容器加载单独的操作系统。容器化的高效率使其非常适合交付现代应用程序所需的微服务。由于容器是隔离的,它们之间可以保持安全,因为任何恶意破坏或代码冲突都无法在它们之间转移。与完整的虚拟机相比,这种隔离没有那么彻底,但可以最大限度地减少威胁。快速部署意味着在出现问题时,可以快速停止和重启容器。
容器化如何运作
容器化可在本地或基于云的基础设施之上运行。后者将部署共享操作系统,并在其上安装容器引擎,例如 Docker 或 Google Kubernetes 引擎。这将协调托管的容器,每个容器由一个或多个应用程序和必要的依赖关系组成。无论作为主机的计算环境如何,该容器都能可靠运行,因为它不依赖其资源。
容器可以包含整个或多个应用程序,但也可以采用模块化方法来交付复杂的应用程序。这可以分成模块,每个模块都在各自的容器中运行,这就是所谓的微服务方法。虽然容器通常是孤立的,但它们可以通过定义明确的通道相互通信。由于容器的轻量级特性,它们可以根据需要及时启动,而不是一直运行下去,继续消耗资源。
容器化与虚拟化
容器化与虚拟化经常被提及。两者关系密切,但采用的方法略有不同。虚拟化模拟整个物理硬件,包括 CPU 内核、内存、存储甚至 GPU 加速,并在其中运行客户操作系统。容器化不模拟硬件,只模拟操作系统。因此,多个应用程序可以共享同一个操作系统内核。在实践中,容器和完整虚拟机的作用可能类似。后者提供了更大的资源隔离,而容器化的轻量级方法则在有利于快速动态部署的地方提供了优势。无论作为主机的计算环境如何,该容器都能可靠地运行,因为它不依赖其资源。
容器可以包含整个或多个应用程序,但也可以采用模块化方法来交付复杂的应用程序。这可以分成模块,每个模块都在各自的容器中运行,这就是所谓的微服务方法。虽然容器通常是孤立的,但它们可以通过定义明确的通道相互通信。由于容器的轻量级特性,它们可以根据需要及时启动,而不是一直运行下去,继续消耗资源。