Docker
TZ=CEST 時 Docker 容器時間落後 2 小時
我嘗試執行與我的 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