为什么 nginx 没有在 Windows Server 2019 docker 容器中启动?

Why is nginx not starting in Windows Server 2019 docker container?

更新 3(解决方案):

我在我的主机上安装了最新的 Windows 更新并指定了确切的服务器核心映像以匹配我更新的 Windows 服务器版本:

mcr.microsoft.com/windows/servercore:10.0.17763.973

当 运行 连接容器时,一切都按预期工作。

原题:

我不明白为什么 nginx 没有在我的容器 运行ning 上 Windows Server 2019 上启动。

没有任何内容写入 nginx error.log 并且使用 this answer 检查系统事件没有提供任何关于 nginx 的信息。

当我直接在服务器上 运行 nginx 时(即没有容器)它启动正常。

以下是 dockerfile 的内容:

FROM mcr.microsoft.com/windows/servercore:ltsc2019
WORKDIR C:/nginx
COPY /. ./
CMD ["nginx"]

我运行容器使用以下命令:

docker run -d --rm -p 80:80 --name nginx `
-v C:/Data/_config/nginx/conf:C:/nginx/conf `
-v C:/Data/_config/nginx/temp:C:/nginx/temp `
-v C:/Data/_config/nginx/logs:C:/nginx/logs `
nginx-2019

如果我 exec 进入 运行ning 容器,我可以看到目录结构符合预期:

Microsoft Windows [Version 10.0.17763.1040]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\nginx>dir
 Volume in drive C has no label.
 Volume Serial Number is 72BD-907D

 Directory of C:\nginx

02/27/2020  06:05 AM    <DIR>          .
02/27/2020  06:05 AM    <DIR>          ..
02/27/2020  06:05 AM    <DIR>          conf
02/27/2020  05:11 AM    <DIR>          contrib
02/27/2020  05:11 AM    <DIR>          docs
02/27/2020  05:11 AM    <DIR>          html
02/27/2020  05:55 AM    <DIR>          logs
02/27/2020  05:14 AM    <DIR>          conf
01/21/2020  03:30 PM         3,712,512 nginx.exe
01/21/2020  04:41 PM    <DIR>          temp
               1 File(s)      3,716,608 bytes
               9 Dir(s)  21,206,409,216 bytes free

更新 1:

作为我的故障排除过程的一部分,我在 Azure 上启动了一个干净的 VM,在安装 Docker 并使用完全相同的文件重新创建 Docker 图像后,它按预期启动。

这意味着该问题是我的服务器特有的,而不是一般问题。

更新 2:

通过从 运行 命令中删除 --rm 我在容器退出后通过 运行ning docker ps -a 找到以下信息:

Exited (3221225785) 4 seconds ago

我找不到关于退出代码含义的任何信息。

我遇到了同样的问题,但对我来说不是 docker 或 nginx,而是图像。 image mcr.microsoft.com/windows/servercore:ltsc2019 于 2/11/2020 更新,容器和主机必须具有相同的更新(我认为是 KB4532691),否则某些进程可能会静默失败。

我更新了主机,一切正常。

microsoft-windows-servercore you-might-encounter-issues-when-using-windows-server-containers-with-t 了解更多信息