Windows 和容器

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

容器是一种跨本地和云中的不同环境打包和运行 Windows 和 Linux 应用程序的技术。 容器提供一个轻型隔离环境,使应用更易于开发、部署和管理。 容器可以快速启动和停止,因此适用于需要快速适应不断变化的需求的应用。 容器的轻型性质也使得它们成为一种有用的工具,可以提高基础结构的密度和利用率。

示意图,显示容器可以在云中或本地运行,支持以几乎任何语言编写的整体式应用或微服务。

Microsoft 容器生态系统

Microsoft 提供了许多有助于在容器中开发和部署应用的工具和平台:

容器工作原理

容器是一个隔离的轻型包,用于在主机操作系统上运行应用程序。 容器在主机操作系统的内核(可将其视为操作系统的隐藏管道)上构建,如下图所示。

体系结构图,显示容器如何在内核上运行

容器在共享主机操作系统的内核时,并不能对其进行自由访问, 而只能获取系统的隔离视图,在某些情况下只能获取其虚拟化视图。 例如,容器可以访问文件系统和注册表的虚拟化版本,但任何更改只影响容器,在容器停止后会被丢弃。 若要保存数据,容器可以装载持久性存储,例如 Azure 磁盘或文件共享(包括 Azure 文件存储)。

容器在内核上构建,但内核并不提供应用运行所需的所有 API 和服务 - 大多数 API 和服务由内核之上以用户模式运行的系统文件(库)提供。 容器与主机的用户模式环境隔离,因此需要其自己的用户模式系统文件副本,这些文件在打包后称为基础映像。 基础映像充当构建容器时所在的基础层,为容器提供内核不提供的操作系统服务。 不过,有关容器映像的详细内容,我们会在后面讨论。

容器与虚拟机

与容器不同,虚拟机 (VM) 运行的是完整的操作系统(包括其自己的内核),如下图所示。

体系结构图,显示 VM 如何运行完整的操作系统(独立于主机操作系统)

容器和虚拟机都有自己的用途 - 事实上,许多容器部署使用虚拟机作为主机操作系统,而不是直接运行在设备上,在云中运行容器时尤其如此。

若要更详细地了解这些互补技术的异同,请参阅容器与虚拟机

容器映像

所有容器都从容器映像创建。 容器映像是一个文件捆绑包,这些文件组织成一个由层组成的堆栈,而这些层驻留在本地计算机或远程容器注册表中。 容器映像包含为应用提供支持所需的用户模式操作系统文件、应用、应用的任何运行时或依赖项,以及应用正常运行所需的任何其他杂项配置文件。

Microsoft 提供多个映像(称为基础映像),你可以从其着手构建自己的容器映像:

  • Windows - 包含整套 Windows API 和系统服务(服务器角色除外)。
  • Windows Server - 包含整套 Windows API 和系统服务。
  • Windows Server Core - 一个较小的映像,包含部分 Windows Server API - 即完整的 .NET Framework。 它还包括大多数(但不是所有)服务器角色,例如不包含传真服务器。
  • Nano Server - 最小的 Windows Server 映像,包括支持 .NET Core API 和某些服务器角色。

如前所述,容器映像由一系列层组成。 每个层包含一组文件,这些文件重叠在一起时表示容器映像。 由于容器的分层特性,你不需始终以某个基础映像为目标来构建 Windows 容器, 而是可以以另一个已经携带你所需框架的映像为目标。 例如,.NET 团队发布了一个携带 .NET Core 运行时的 .NET Core 映像。 有了它,用户就不需重复 .NET Core 安装过程,只需重复使用该容器映像的层即可。 .NET Core 映像本身在 Nano Server 基础上构建。

如需更多详细信息,请参阅容器基础映像

容器用户

面向开发人员的容器

容器有助于开发人员更快地生成和交付更高质量的应用。 开发人员可以使用容器创建一个在数秒内以相同方式跨环境部署的容器映像。 若要跨团队共享代码,以及在不影响主机文件系统的情况下启动开发环境,不妨使用容器这种可以轻松掌握的机制。

容器可移植且通用,可以运行以任何语言编写的应用,并且兼容任何运行 Windows 10 版本 1607 或更高版本或者 Windows Server 2016 或更高版本的计算机。 开发人员可以在便携式计算机或台式机上通过本地方式创建并测试一个容器,然后将该容器映像部署到其公司的私有云、公有云或服务提供商。 容器的自然敏捷性支持大规模虚拟化云环境中的现代应用开发模式。 对于开发人员来说,最有用的优点可能就是能够隔离你的环境,使你的应用始终可以获得指定的版本,从而避免与依赖性发生冲突。

面向 IT 专业人员的容器

容器有助于管理员创建更易于更新和维护且更能充分利用硬件资源的基础结构。 IT 专业人员可以使用容器为其开发、QA 和生产团队提供标准化环境。 通过使用容器,系统管理员抽象出操作系统安装和底层基础结构中的差异。

你还可使用容器的交互模式在同一系统中运行命令行工具的相互冲突的实例。

容器业务流程

设置基于容器的环境时,业务流程协调程序是基础结构的关键部分。 虽然你可以使用 Docker 和 Windows 手动管理数个容器,但应用通常使用五个、十个甚至数百个容器,这种情况下需要业务流程协调程序。

构建容器业务流程协调程序是为了方便大规模地在生产环境中管理容器。 业务流程协调程序提供的功能适用于:

业务流程协调程序有助于你大规模扩展容器化应用,并提供以下功能:

  • 大规模部署
  • 工作负荷计划
  • 运行状况监视
  • 在节点故障时进行故障转移
  • 纵向扩展或缩减
  • 网络
  • 服务发现
  • 协调应用升级
  • 群集节点相关性

可以将许多不同的业务流程协调程序与 Windows 容器配合使用;下面是 Microsoft 提供的选项:

尝试 Windows 上的容器

有关 Windows Server 或 Windows 10 上的容器的入门,请参阅以下文档:

如果需要帮助才能确定哪些 Azure 服务适合自己的方案,请参阅 Azure 容器服务选择使用哪些 Azure 服务来托管应用程序

资源

查看使用 Windows Server 容器的资源: