全球数据弹性领域领导者 #1
Veeam 为受 CrowdStrike 内容更新影响的客户提供指导

容器是什么?

容器是一种轻量级的包装,包含了应用程序的代码以及运行该代码所需的所有库和其他依赖项。容器的目的是使开发人员和系统管理员能够快速部署应用程序。容器有助于避免冲突和其他可能难以调试的依赖关系问题。

您可能听说过很多关于容器化的信息,尤其是在应用开发和微服务领域。容器化是指开发人员将应用程序捆绑到容器中,使用户更容易部署它们。容器易于使用,对于将应用程序部署到云特别有用,因为容器不需要关心底层计算机的配置。

使用 Veeam Kasten 保护 Kubernetes 部署中的数据。

容器和虚拟机(VM)有何区别?

简单地说,容器是一个包,它包含在给定环境中运行应用程序所需的一切。容器和虚拟机之间的主要区别在于每个包中所包含的内容。

容器包含应用程序以及应用程序所依赖的任何库。它运行在操作系统之上。相比之下,虚拟机包含整个操作系统,并在虚拟机管理程序上运行。容器非常轻量级,但它们无法与底层硬件通信,并且只能运行底层操作系统支持的应用程序。虚拟机可以更好地访问主机的硬件,并且可以将该硬件支持的任何操作系统作为 VM 运行。 

虚拟机的缺点是它们需要更多的资源。它们不是只加载所需应用程序需要的二进制文件,而是加载整个操作系统。

容器的优势

相比于虚拟机和将应用程序直接部署到主机操作系统,使用容器具有若干潜在优势。 

  • 灵活性:开发人员不必共享有关如何安装任何依赖项和解决与系统上其他应用程序冲突的说明,只需共享一个设置为正常工作的容器即可。任何运行具有足够硬件的兼容操作系统的人都可以下载并运行该容器,并拥有该应用程序的工作版本。
  • 流动性: 由于容器不关心底层操作系统的配置,因此它们可以在任何地方运行。开发人员可以测试需要特定服务器配置的应用程序,而不必担心其开发环境中的差异是否会导致问题。
  • 可伸缩性: 容器对于使用微服务架构开发的应用程序特别有用。开发人员可以将单个服务配置为作为容器运行,这些容器可以使用 Kubernetes 等工具进行部署和管理。为需求较高的服务启动额外的容器,并在不再需要时关闭它们,这是扩展 Web 应用程序的一种有效方法,尤其是与为单体应用程序简单地过度配置硬件相比。
  • 复原能力: 当应用程序在容器中运行时,它们与操作系统的其余部分隔离。容器可能能够通过网络和 API 相互通信,但它们在自己的独立环境中运行。如果在容器中运行的应用程序崩溃,它应该不会对其他容器产生影响。此外,容器管理系统可用于根据需要关闭和重启容器,以保持应用程序平稳运行。

容器类型

虚拟化有多种类型。大多数人谈论容器时,他们指的是应用程序虚拟化。对于这种类型的虚拟化,容器内的应用程序会上当,误以为它正在直接与操作系统交互,而实际上它正在与容器引擎或虚拟化层通信。

应用程序虚拟化提供了一个抽象层,允许应用程序在它们不是为之设计的操作系统上运行。它还可以运行具有不兼容依赖项的应用程序,因为每个应用程序都可以访问它们需要的库,而不会与其他应用程序发生冲突。

除了应用程序虚拟化之外,容器还可以使用操作系统级虚拟化。操作系统级虚拟化的示例包括 OpenVZ、Solaris 容器、chroot jail 和 LXC。Docker 容器也可以被视为操作系统级虚拟化的一个示例。通过这种类型的虚拟化,内核允许存在多个用户空间实例,这些实例彼此隔离。Chroot jails 经常以这种方式用作安全措施。OpenVZ 通常用于部署虚拟专用服务器,本质上允许将 Linux 服务器划分为几个较小的服务器,而无需运行具有额外资源和性能开销的虚拟机。

硬件虚拟化更常用于虚拟机。借助硬件虚拟化,可以镜像整个物理机。每个来宾操作系统都认为它正在直接与底层硬件通信,而实际上它正在与虚拟机管理程序通信,该虚拟机管理程序可能正在硬件本身或主机操作系统中运行。管理程序负责资源管理,可随时限制每个虚拟机可访问的内存/处理器时间。

容器用例

容器在开发和生产环境中都很有用。它们的可移植性使它们可用于 DevOps 和 CI/CD,而它们的敏捷性和可扩展性意味着它们在微服务和云部署中同样有用。实际容器用例的一些示例如下: 

微服务架构

使用微服务架构可以快速开发复杂的应用程序并有效地扩展它们。现在,许多大型 Web 应用程序会使用微服务架构,包括 Google 提供的一些最受欢迎的服务。容器是微服务的关键部分。每个服务都作为单独的容器运行,由 Kubernetes 等工具管理。这些容器通过 REST API 相互通信,API 网关充当中间人以促进通信。

DevOps 和 CI/CD

容器是任何 CI/CD 工作流的重要组成部分。当开发人员对应用程序的代码进行更改并提交这些更改时,可能会触发 CI/CD 工具更新任何容器镜像并运行测试。这可能会更快地提供有关代码更改的反馈,并确保结果比在审阅者自己的机器上获得的测试结果更可靠,因为后者的环境配置可能与开发人员使用的设置不同。

混合云/多云环境

现在,许多组织都有多云环境,并且使用多个不同的云服务提供商。其他组织则使用混合云设置,以及一些内部解决方案和云解决方案。在这些环境中管理应用程序并非总是那么容易。容器提供了一种实用的解决方案,因为它们包含应用程序运行所需的一切。无需花时间为每个云服务器配置服务器、安装库和管理复杂配置,只需完成一次工作,然后就可以将容器部署到所需的任何环境中。

应用程序开发与部署

容器对于开发和部署应用程序非常有用。许多开发人员以容器的形式提供他们的应用程序,以便人们轻松测试和部署它们。他们还为开发人员提供用于其工作的容器。例如,流行的开源项目 Nextcloud 建议开发人员使用 Docker 容器来管理他们的开发环境。

容器化工具

容器化并不是一种新型技术,但近年来它变得越来越流行。诸如 LXC 之类的软件已在 Linux 上推出很长时间了。但是,它的设置非常复杂,而且这种进入壁垒意味着只有相对有经验的系统管理员和开发人员才能使用它。

Docker 彻底改变了容器,让几乎任何人都可以轻松运行容器,并提供工具,例如 Docker Hub,人们可以共享容器供任何人下载和运行。

Docker 本身非常灵活和强大,但通过命令行管理大量容器并不容易,跨多个云主机管理容器更具挑战性。容器管理解决方案(如 Kubernetes)可以协助进行容器管理和健康监控。

Docker 基于开放容器计划,并且推出了许多其他容器和容器管理解决方案。例如, Podman 为 docker 和其他兼容 OCI 的容器解决方案提供容器管理功能。 

容器的挑战和局限性

虽然容器功能强大且灵活,但在部署基于容器的解决方案之前需要考虑一些挑战和潜在问题。

  • 资源限制:虽然容器比虚拟机更轻量级,但与直接在主机上运行应用程序相比,它们可能仍会产生一些开销。假设您想要在计算机上运行一个依赖于 LAMP 堆栈的 Web 应用程序。如果您的计算机上已经有工作 Web 服务器和数据库引擎,则可以将其部署为虚拟主机,它将在现有服务器上运行。如果将其部署为 docker 容器,则运行的是 Apache、PHP 和 MySQL/MariaDB 的额外副本。在小范围内,这种开销可能无关紧要,但随着您部署越来越多的容器,它可能会变得更加明显。
  • 硬件访问: Docker 容器无法像虚拟机那样访问底层硬件。如果您运行的是简单的微服务,这可能无关紧要,但对于需要较低级别访问权限的应用程序,这会拒绝使用容器。
  • 缺乏标准化:虽然有多个容器引擎,但并非所有引擎都符合 OCI 标准。缺乏标准化可能会给许多组织带来问题。虽然 IT 团队可以很轻松地选择一种容器标准并将其用于所有内部容器,但如果他们与采用不同标准的第三方供应商合作,则设置容器管理解决方案可能会变得困难。
  • 安全问题: 容器不像虚拟机那样隔离。与直接在底层操作系统上运行应用程序相比,它们提供了一些隔离,但仍存在一些权限升级风险。重要的是要花时间保护您的 docker/其他容器存储库,在给予 docker 访问底层文件系统的权限时要小心,并确保永远不会以 root 身份运行容器。遵循这些预防措施应该可以减轻许多潜在的容器问题。

如何立即开始使用 Veeam

如果您在开发/DevOps 或应用程序部署中使用容器,则保护数据安全至关重要。Veeam 为云端、内部和混合环境提供了多种数据备份、还原和安全选项。

我们的工具可与各种容器解决方案配合使用,并可与您现有的工作流程无缝集成。如果您想在购买前试用,请利用我们的免费试用版。我们甚至提供了面向 Kubernetes 的 Veeam Kasten 解决方案的社区版,因此,如果您是具有 5 个或更少实例的小型组织,则可以利用它来保护您的数据。

如果您不确定哪种解决方案最适合您的需求,或者您需要我们备份和还原工具设置方面的帮助,请致电我们。我们的团队很乐意提供咨询服务并帮助您入门。

如果您在环境中使用容器,请使用 Veeam 提供的 Veeam Kasten 来保护您的数据。立即下载免费试用版。 

 

特色资源

数据保护

2022 年数据保护趋势

来自 3K+ IT 领导者的最大规模数据保护行业报告

合作伙伴图标

预约演示

参加实时会议,了解如何实现数据保护现代化

联系图标

联系我们

帮助贵组织选择合适的解决方案