在使用具有 2020 年 2 月 11 日安全更新版本的 Windows Server 容器时可能会遇到问题

应用对象
Windows Server 2016, all editions Windows Server 2019, all editions Windows Server version 1803 Windows Server version 1809 Windows Server, version 1903, all editions Windows Server, version 1909, all editions

最后更新时间 2020 年 3 月 10 日上午 10:00 PST

症状

如果容器主机或容器映像具有 2020 年 2 月 11 日安全更新,则使用 Windows Server 容器可能会遇到问题,除非 Windows 容器主机和 Windows Server 容器映像都与 2020 年 2 月 11 日安全更新匹配。

运行或构建容器时的症状可能包括:

  1. 运行命令“docker run”或“docker build”时,可能不会收到输出,并且可能会变得无响应。
  2. Kubernetes 中的 Windows Server 容器未达到“正在运行”状态。
  3. 你收到错误“docker:来自守护程序的错误响应:容器 <ID> 在”开始:Windows 系统调用失败:等待操作超时“期间遇到错误。 (0x102) 。
  4. 在容器内运行的 32 位应用程序或进程可能会静默失败。

原因

发生此问题是因为安全性发生了变化,这需要更改用户模式和内核模式之间的接口。 由于进程独立容器与容器主机和容器映像共享内核模式,因此未安装更新的用户模式组件既与新的安全内核接口不兼容,也不安全。

解决方案和解决方法

我们在 Windows 容器文档站点的 Windows 容器版本兼容性更新 Windows Server 容器部分添加了新的更新指南。  还包括有关更新兼容性和矩阵的详细信息。  有关本文中列出的具体问题的信息,请参阅下面的解决方案和缓解措施。

“未运行”和“32 位应用程序静默失败”问题(症状 1、2、3、4)的解决方案:

2020 年 2 月 18 日发布了更新的容器映像,以解决具有本文中的症状(1、2、3、4)的问题。  如果你遇到这些问题,我们建议你将容器主机更新到 2020 年 2 月 11 日安全更新版本和 2020 年 2 月 18 日发布的容器映像。   注意 2020 年 2 月 18 日版本仅适用于容器映像。  2020 年 2 月 11 日的安全更新仍是容器主机的最新更新。

若要解决环境中的问题,请重新运行 pull 命令以更新Windows Server基础 OS 映像或适用的容器映像(如 IIS 或 .NET),并重新运行自动化管道,以使用容器映像和 2020 年 2 月 18 日容器映像重新生成容器。

重要如果更改了拉取标记或自动化作为本文中问题的解决方法,则应还原对以前的拉取标记所做的更改。  你不再需要使用特定版本。

“32 位应用程序静默失败”问题(症状 4)的缓解措施:

强烈建议将容器主机更新为 2020 年 2 月 11 日安全更新,如上所述。 如果无法将容器主机更新为 2020 年 2 月 11 日安全更新,则需要将容器映像的生成和修订版本与容器主机操作系统的生成和修订版本进行匹配。  有关如何检查容器主机版本的说明,请参阅此文。从容器主机获取版本后,可以使用以下命令拉取容器映像版本, (需要调整Windows Server基本 OS 映像和版本,) 环境中应用。 例如,如果你使用的是 Windows Server Core 容器:

docker pull mcr.microsoft.com/windows/servercore:<version your container host, such as 10.0.17763.1040>

容器主机和容器映像版本匹配后,你应该能够继续执行容器命令,如 run 或 build 命令。

注意 仅当你遇到无提示故障的应用时,我们才建议更改拉取标记或自动化。

参考资料

以下列表显示了支持容器映像的Windows Server版本,以及 2020 年 1 月 14 日和 2020 年 2 月 11 日发布的安全更新的版本号,以及仅在 2020 年 2 月 18 日发布的容器映像的版本号。  如果未在浮动标记中指定版本,则将自动拉取下表列出的 2020 年 2 月 18 日发布的容器映像。

Windows Server 版本(浮动标记) 2020 年 1 月 14 日发布的更新版本 2020 年 2 月 11 日的更新版本 2020 年 2 月 18 日的更新版本
Windows Server 2016 (ltsc2016) 10.0.14393.3443 10.0.14393.3504 10.0.14393.3506
Windows Server 版本 1803 (1803) 10.0.17134.1246 10.0.17134.1304 10.0.17134.1305
Windows Server 2019 (ltsc2019)
Windows Server,版本 1809 (1809)
10.0.17763.973 10.0.17763.1039 10.0.17763.1040
Windows Server,版本 1903 (1903) 10.0.18362.592 10.0.18362.657 10.0.18362.658
Windows Server,版本 1909 (1909) 10.0.18363.592 10.0.18363.657 10.0.18363.658

如果在容器中使用 Azure 市场虚拟机映像,则 2020 年 2 月映像现在可用。 使用这些映像不应遇到上述问题或症状。  有关更多信息,请参阅 KB4540981

有关 Windows 容器映像的完整列表,请参阅此处的“Docker 中心”页面。

有关Windows Server容器的更多详细信息,请参阅 https://aka.ms/containers