Docker

TZ=CEST 時 Docker 容器時間落後 2 小時

  • April 17, 2020

我嘗試執行與我的 Docker 主機具有相同時區的 Docker 容器。主機時區是CEST.

當我執行時:

$ date
Thu Apr 16 11:04:11 CEST 2020
$ docker run -e TZ=CEST debian:buster date
Thu Apr 16 09:04:14 CEST 2020

容器比主機晚 2 小時。

另一方面,如果我設置TZ=Europe/Paris,它會按預期工作:

$ docker run -e TZ=Europe/Paris debian:buster date
Thu Apr 16 11:04:22 CEST 2020

這是一個錯誤還是我錯過了什麼?

經過一些研究,這似乎不是環境變數CEST的有效值。只是目前日期夏季時的可顯示版本。TZ``CEST``CET

事實上,如果我設置TZ為一個明顯無效的值,它會給出:

$ TZ=FOO date
Fri Apr 17 14:07:56 FOO 2020

另請注意,它與 Docker 無關。

參考 :

時區是預設設置的,您需要手動更改。

有一些選項:

在 Dockerfile 中設置它:

ENV TZ=America/Los_Angeles
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

使用卷與主機同步:

volumes:
- "/etc/timezone:/etc/timezone:ro"
- "/etc/localtime:/etc/localtime:ro"

或者

docker run -v /etc/timezone:/etc/timezone:ro

最後,手動設置它,但如果你重新啟動容器,你會失去配置:

docker run -e TZ=America/New_York ubuntu date

引用自:https://serverfault.com/questions/1012542