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版本中默认输出格式的差异造成的。