最后更新时间 2020 年 3 月 10 日上午 10:00 PST
症状
如果容器主机或容器映像具有 2020 年 2 月 11 日安全更新,则使用 Windows Server 容器可能会遇到问题,除非 Windows 容器主机和 Windows Server 容器映像都与 2020 年 2 月 11 日安全更新匹配。
运行或构建容器时的症状可能包括:
-
当你运行命令“docker run”或“docker build”时,你可能无法接收输出,它可能会变得无响应。
-
Kubernetes 中的 Windows Server 容器未达到“正在运行”状态。
-
你收到错误“docker: 来自守护程序的错误响应: 容器 <id> 启动时遇到错误: Windows 系统调用失败: 等待操作超时。 (0x102)。”
-
在容器内运行的 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 日的安全更新仍是容器主机的最新更新。
若要解决你环境中的问题,请重新运行拉取命令以更新 Windows Server 基操作系统映像或适用的容器映像(如 IIS 或 .NET),并重新运行自动化管道以使用具有 2020 年 2 月 18 日容器映像的容器映像重建容器。
重要 如果为了解决本文中所述的问题而更改了拉取标记或自动化,则应将更改还原为以前的拉取标记。 你不再需要使用特定版本。
“32 位应用程序静默失败”问题(症状 4)的缓解措施:
我们强烈建议你将容器主机更新为 2020 年 2 月 11 日安全更新,如上所述。 如果无法将容器主机更新为 2020 年 2 月 11 日安全更新,则需要将容器映像的生成和修订版本与容器主机操作系统的生成和修订版本进行匹配。 有关如何检查容器主机版本的说明,请参阅本文。 从容器主机获得版本后,可以使用以下命令拉取容器映像版本(你需要调整你环境中应用的 Windows Server 基操作系统映像和版本)。 例如,如果你使用的是 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。