0

更新 3(解决方案):

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

mcr.microsoft.com/windows/servercore:10.0.17763.973

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

原始问题:

我无法弄清楚为什么nginx没有在我在 Windows Server 2019 上运行的容器中启动。

没有向 nginx 写入任何内容,并且使用此答案error.log检查系统事件不会提供有关 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进入正在运行的容器,我可以看到目录结构符合预期:

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从运行命令中删除,我通过docker ps -a在容器退出后运行找到以下信息:

退出 (3221225785) 4 秒前

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

4

1 回答 1

2

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

我更新了我的主机,一切都很好。

有关更多信息,请参阅microsoft-windows-servercoreyou-might-encounter-issues-when-using-windows-server-containers-with-t

于 2020-02-28T18:55:46.720 回答