什么是容器?
容器是一个软件单元,可包含应用运行所需的所有组件和功能。大多数现代应用都是由多个容器组成,每个容器负责执行某种特定功能。容器通常以兆字节为度量单位,不使用虚拟机监控程序,且通常被视为更快、更敏捷的进程隔离方式。
容器出色的可移植性,是它广受欢迎的一大重要因素。它与相互拼接的乐高™ 积木很像,您可以轻松换下单个容器并将其移动到不同的环境中。将应用及其依赖项封装到容器中之后,便可以将其部署到任何所需位置:开发人员的笔记本电脑、数据中心、云或边缘,且其功能不会发生任何变化。
Docker 是一个用于构建、部署和管理容器化应用的开源平台,多年来,在容器技术的发展中发挥着重要作用。
什么是虚拟机?
虚拟机在云计算中发挥着至关重要的作用,它通过在隔离的实例中运行操作系统来模拟物理计算机。多个虚拟机通常托管在单个服务器上,由虚拟机监控程序充当物理主机和虚拟机之间的轻量级软件层。此虚拟机监控程序可高效管理对资源的访问,使虚拟机能够作为不同的服务器运行,同时提高灵活性和敏捷性。
在 2000 年代初期,整合和节约成本的倡议在 IT 领域得到了广泛推广,虚拟机的使用逐渐变得流行起来,随着时间的推移,对虚拟机的使用也在不断演变。企业的虚拟机部署已日趋成熟,不再局限于简单的整合,而是扩展涵盖了各种用途。其中包括按需为应用提供资源,以及优化对 GPU 等昂贵资源的访问。
虚拟机还充当了许多早期云计算环境的基础,用于促进资源虚拟化并支持多租户和隔离,即多个客户所运行的系统使用的是相同的资源。
虚拟机包含自己的操作系统,因此可以同时执行多个需要占用大量资源的功能。由于虚拟机的可用资源大大增加,因此它们可以抽象、拆分、复制和模拟整个服务器、操作系统、台式机、数据库和网络。
云原生与传统 IT 的对比
除了技术差异之外,容器与虚拟机之间的对比恰恰代表了现代云原生 IT 实践与传统 IT 架构之间的较量。
传统的 IT 架构
(老式的单体式架构)在这些架构中,工作负载的各个方面紧密耦合,无法在没有整个架构的支持下运行。由于各方面无法拆分,因此,需要将它们作为一个整体封装到一个更大的环境(通常是虚拟机)中。
在虚拟机中构建和运行整个应用曾经一度司空见惯,但将所有代码和依赖项都放在一个地方会导致虚拟机体量过大,并因此有可能在推送更新时出现级联故障和停机。
它们是如何运作的?
虚拟化
一款称为“虚拟机监控程序”的软件会将资源与所属物理机分开,以便对它们进行分区并使其专用于虚拟机。当用户发出需要物理环境提供额外资源的 VM 指令后,虚拟机监控程序会将请求中继到物理系统并缓存更改。虚拟机的形式和运行方式类似于物理服务器,这会增加应用依赖性和占用大量操作系统空间的缺点,而运行单个应用或微服务大多不需要占用如此多的空间。
容器
容器中的所有内容均通过容器镜像文件(包含所有库和依赖项)封装和交付。容器镜像文件类似于软件安装包(例如 Linux 中的 RPM),但只需具有兼容的内核和容器运行时,应用即可运行,无论创建容器时使用的是哪种操作系统,也无论容器中的库来自何处。由于容器非常小,通常有数百个容器松散地耦合在一起,因此,需要通过容器编排平台(例如红帽 OpenShift 和 Kubernetes)对其进行置备和管理。
我应该使用哪一种?
这取决于您是需要一个可以轻松移动的小型实例(容器),还是需要半永久地分配自定义 IT 资源。
还需要考虑的因素包括应用架构、开发实践、安全性和监管要求。
容器具有规模小、轻量化的特性,因而可轻松部 0署.....到0裸机系统以及公共云、私有云、混合云和多云环境。在虚拟机中运行容器也很常见,因为企业的现有基础架构都是围绕虚拟机构建的。这一点充分体现出容器的灵活性。
此外,容器也是部署当今云原生应用的理想环境,云原生应用是一些微服务的集合,旨在跨公共云、私有云、混合云和多云环境提供一致的开发和自动化管理体验。云原生应用可以加快新应用的构建,促进现有应用的优化,提高应用之间的连接速度。
与虚拟机相比,容器非常适合用于:
- 构建云原生应用
- 封装微服务
- 将应用纳入 DevOps 或 CI/CD 实践中
- 在多样化的 IT 环境中移动可扩展的 IT 项目
与容器相比,虚拟机非常适合用于:
如果您在虚拟机和容器上均有运行的应用,红帽服务互连可以帮您连接不同环境中的应用和服务。
裸机、虚拟机与容器的对比
虚拟机和容器可以部署到各种基础架构上,包括裸机服务器。
什么是裸机?
“裸机”(Bare metal)是指在物理硬件上运行的计算机或服务器,不需要虚拟机监控程序、虚拟机或容器化的辅助即可运行。裸机服务器也称为专用服务器,这是因为硬件组件不与其他用户共享,完全供单个租户专用。
裸机服务器能够以较低的延迟处理大量数据,因此,它速度快、性能强。借助裸机,用户可以完全掌控其服务器基础架构,即可以自行选择操作系统,并对硬件和软件进行微调,以满足其特定的工作负载需求。
但是,虽然裸机部署在非常注重性能和能否直接访问硬件的场景中很有价值,但它们的灵活性和资源管理水平可能无法媲美容器或虚拟机。
是否可以在裸机上托管虚拟机?
可以,裸机服务器可以通过添加虚拟机监控程序和虚拟化软件来托管虚拟机。
是否可以在裸机上托管容器?
可以,Docker、Kubernetes 和 Podman 等平台均旨在帮助用户在包括裸机服务器在内的多种基础架构上大规模管理和部署容器。
为什么选择红帽?
红帽® OpenShift® 是基于容器的一站式企业就绪型应用平台,提供多种支持各类应用和环境的部署和使用选项。借助红帽 OpenShift,企业可快速且安全地在任何位置大规模构建、部署、运行和管理应用。
红帽 OpenShift 虚拟化是红帽 OpenShift 的一项特色功能,IT 团队可通过该功能在同一 Kubernetes 平台上运行虚拟机和容器,从而简化管理并缩短部署至生产环境的时间。
如此一来,企业能够充分利用虚拟化方面的现有投资,同时获享现代应用平台的简易性和高效性。它可以通过将虚拟机集成到 OpenShift 应用平台中,为应用开发和部署提供一致的环境。开发人员可以更快地构建、测试和部署应用,加快产品上市时间。