docker集装箱:时间/时区错误

我在一个正在运行的docker容器与节点和由于某种原因的时区/主机的时间vsdocker容器内部从来没有排队:

root@foobar:~# node -e "console.log(new Date())" >> Tue May 17 2016 15:12:43 GMT+0200 (CEST) root@foobar:~# docker exec 9179105c0ff9 node -e "console.log(new Date())" >> Tue May 17 2016 13:13:01 GMT+0000 (Europe) root@foobar:~# cat /etc/timezone >> Europe/Vienna root@foobar:~# docker exec 9179105c0ff9 cat /etc/timezone >> Europe/Vienna 

所以我已经在我的docker-start shell中做了以下脚本:

 docker run \ ... -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ -e "TZ=Europe/Vienna" \ ... 

…但是,正如你在第一个codeblock中看到的那样,时间依然是错误的! 任何想法呢? 我错过了什么?

(fyi:我正在运行一个通过mupx部署的meteor应用程序)

更新:

在主机和容器内部运行date之后,再次相差2小时。 所以由于某种原因docker容器只是不“应用”我的时区, 它似乎问题不是JS /节点相关,因为date只是一个简单的Unix系统cmd …我在这里失踪了什么?!

>> Tue May 17 2016 15:12:43 GMT+0200 (CEST)

>> Tue May 17 2016 13:13:01 GMT+0000 (Europe)

几乎是同一时间(大约18秒的差异,因为你没有同时运行命令)。 仔细观察一下,格林威治标准时间下午3点左右,格林尼治标准时间下午1点左右,格林威治时间下午1点左右。 这只是输出格式的差异,但时间是一样的。 如果对new Date()的值执行.getTime() ,则可能会有相同的值。 这可能是由于不同的node.js版本中默认输出格式的差异造成的。