2016-05-17 54 views
1

我與節點運行的泊塢窗容器由於某種原因時區/主機的VS內的泊塢窗容器從不排隊時間:碼頭工人集裝箱:時間/時區錯

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

那麼什麼我已經做了我的搬運工啓動外殼腳本如下:

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

...但仍,你可以在第一個代碼塊見,時間仍然是錯誤的!對此有何想法?我錯過了什麼?

(供參考:我正在通過mupx部署流星應用程序)

UPDATE:

在主機上和容器中運行date後,有再次的2小時的差異。所以由於某種原因碼頭集裝箱只是不「適用」我的時區和它似乎問題不是JS /節點相關,因爲date只是一個簡單的unix系統cmd ...我在這裏錯過了什麼?!

+1

ServerFault上有一個答案:http://serverfault.com/a/683651 – Shanoor

回答

2

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

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

大致相同的時間(大約18秒的差別,因爲你沒有在同一時間運行的命令)。 仔細看看,它是GMT + 0200左右下午3點左右,GMT + 0000左右下午1點左右。 這只是輸出格式的差異,但時間是相同的。 如果您對new Date()的值執行.getTime(),則可能具有相同的值。 這可能是由於不同node.js版本中的默認輸出格式不同所致。

+0

我知道這是「相同」的時間。但是主機上和容器內的節點版本相同。另外,當我使用'date'來回顯系統時間時,容器和主機之間又有2小時的差異。由於'日期'不是JS函數或任何東西,但只是unix相關,這似乎實際上不是一個JS問題畢竟。 –

+0

奇怪的是,我在本地有: '$ date; TZ =「歐洲/維也納」日期;碼頭運行節點日期;碼頭運行-e TZ =「歐洲/維也納」節點日期 Tue May 17 17:54:07 UTC 2016 Tue May 17 17:54:07 CEST 2016 Tue May 17 17:54:08 UTC 2016 Tue May 17 17:54:09 CEST 2016' – user801247

+0

我在本地有: 'docker run -e TZ =「Europe/Vienna」node node -e「console.log(new Date()。getTimezoneOffset())」'=> -'docker run node node -e「console.log(new Date()。getTimezoneOffset())」'=> 0,即docker,我使用的docker鏡像和node都遵守TZ變量。你使用什麼碼頭圖像?你可以在圖像中運行'/ usr/bin/env'來獲得TZ變量嗎? – user801247