容器的可移植性
适用于:Windows Server 版本 23H2
可移植性是适用于容器的 Windows Server 年度通道的一项功能。 可移植性简化了升级过程,帮助你充分利用容器提供的增强灵活性和兼容性。 本文详细说明了如何针对年度通道容器主机对容器映像可移植性进行优化。
Windows Server 年度容器通道是为 Azure Kubernetes 服务和以容器为中心的 Windows Server 部署设计的 Windows Server 版本,可提高效率,并为 Windows 和 Linux 容器提供优化的可移植性。 有关 Windows Server 中容器年度通道的详细信息,请参阅技术社区公告。
可移植性的工作原理
Windows 使用模块化内核,组件通常在 用户模式与内核模式之间紧密绑定。 紧密绑定的组件是基于内核模式驱动程序的有用图形界面,或者可以通过将内核模式降级到用户模式上下文切换来优化性能。 但是,它为容器带来了挑战。 可移植性使用户模式下运行的容器能够运行具有与主机操作系统版本不同的容器映像版本的工作负荷。
如果没有可移植性,用户只能运行具有匹配映像和主机版本的工作负载。 例如,运行 Windows Server 2022 主机的用户无法运行 Windows Server 2019 进程隔离容器。 主机和容器映像之间的版本控制表示 Windows 容器化的重大难题,使得迁移到较新版本的容器主机具有挑战性。 例如,Windows Server 2022 LTSC 要求所有基础结构和应用程序映像都更新到最新版本,同时更新主机。
应用程序二进制接口
应用程序二进制接口或 ABI 允许各种编程语言与用户和内核模式接互。 与运行时对象的客户端代码交互发生在最低级别,客户端语言构造转换为对对象的 ABI 的调用。 Windows 容器的可移植性为用户和内核交互引入了稳定的 ABI。 这种稳定的 ABI 将系统的用户和内核组件分离,并能够单独更新系统的内核和用户元素。
容器可以从其基本层运行所有用户模式二进制文件,但 ABI 层除外。
下图说明了用户模式和内核模式组件之间的通信。
可以使用哪些版本?
Nano Server、Server Core 和 Windows Server 容器映像仅通过 Long-Term 服务通道提供,适用于运行 Windows Server 2019 或更高版本的容器。 有关受支持的 Windows Server 容器映像的详细信息,请参阅 基础映像维护生命周期。
Windows Server 版本 23H2 容器主机仅支持 Windows Server 2022 长期服务通道(LTSC)容器映像。
Azure Kubernetes 服务目前支持 Windows Server 2019 及更高版本的主机。 适用于容器的 Windows Server 年度通道是Microsoft与 Kubernetes 1.28 一起提供的另一个容器 OS 选项。 可以基于年度通道创建新的节点池,并在这些节点上继续部署 Windows Server 2022 容器映像。 Microsoft每年自动更新年度频道版本和任何新的 Kubernetes 版本。 但是,最好遵循最新的 LTSC 版本,确保容器是最新的。
注意
尽管以前的容器映像版本可以在较新的主机操作系统上运行,但较新的容器映像操作系统无法在以前的主机操作系统上运行。