为什么在运行ASP.NET Framework 4.7应用程序时docker容器的时间戳错误?

时间:2018-12-18 13:46:51

标签: asp.net .net windows docker

我有一个非常简单的ASP.NET v4.7 Web应用程序,该应用程序在本地开发笔记本电脑上的docker容器中运行。

Web应用程序尝试连接到DocumentDb,但这失败了,因为容器的时间戳是完全错误的,因此Jwt令牌验证自然会失败。确切的ASP.NET代码并不重要。这更多地说明了为什么Docker容器的时间戳与主机不同。

请注意,我正在使用Windows容器。我的dockerFile如下所示:

FROM microsoft/aspnet:4.7.2-windowsservercore-1803
ARG source
WORKDIR /inetpub/wwwroot

COPY ${source:-obj/Docker/publish} .

当我连接到容器并运行“时间”时,得到以下信息:

docker container exec -it <containerId> cmd
c:\>time
The current time is:  0:29:49.87

c:\>tzutil /g
South Africa Standard Time

当我在笔记本电脑上的主机上执行此操作时,我得到:

C:\>time
The current time is: 15:42:45.72
Enter the new time:

C:\>tzutil /g
South Africa Standard Time

码头工人在哪里得到那个疯狂的时间戳?有没有一种在启动时与主机同步的方法?

我的笔记本电脑的操作系统版本是:Win 10,v1803(内部版本17134.471) 我正在运行:适用于Windows CE v2.0.0.0-win81(29211)的Docker引擎,版本为18.09.0

1 个答案:

答案 0 :(得分:0)

不幸的是,到目前为止,唯一的解决方案是http://github.com/Microsoft/aspnet-docker/issues/120中指出的“等待并腌制”

感谢@ikkentim指出问题所在。

我怀疑我的容器也许无法访问互联网并且无法同步其时钟,但由于今天早上才开始正常工作,因此无法对其进行验证。

如果我找到比“等待”更有用的解决方案,我将发布更好的答案。