为什么 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 了解更多信息
更新 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 了解更多信息