【问题标题】:How do I set timezone for my docker container?如何为我的 docker 容器设置时区?
【发布时间】:2020-07-28 20:21:38
【问题描述】:

我在 Mac 上使用 Docker 19.03,但如果有跨平台解决方案会很好。我有这个 Dockerfile ...

FROM microsoft/mssql-server-linux:latest
  
RUN apt-get update
RUN apt-get install unzip -y

ENV TZ=EDT
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN date
...

这似乎无法设置我的时区,因为打印出来的内容显示“EDT”但仍显示 UTC 时间

 ---> d8cf39550832
Step 4/13 : ENV TZ=EDT
 ---> Running in 8996c46391f4
Removing intermediate container 8996c46391f4
 ---> e01cb9586f4c
Step 5/13 : RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 ---> Running in 1972412de76f
Removing intermediate container 1972412de76f
 ---> fffba690cf2b
Step 6/13 : RUN date
 ---> Running in 9921f49b5353
Tue Jul 28 20:15:57 EDT 2020

运行时,实际东部标准时间是 16:15:57。将时区设置为东部标准的正确方法是什么?我也试过“America/New_York”,但没有更好。

【问题讨论】:

    标签: sql-server docker timezone dockerfile


    【解决方案1】:

    SQL Server 映像基于 Ubunutu 16.04(根据 its DockerHub reference page)。根据this question 的回答,Ubuntu 16.04 存在设置时区的错误。

    尝试将您的 docker 文件更改为:

    ENV TZ=America/New_York
    RUN ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
    

    您绝对应该设置America/New_York,而不是ESTEDT

    【讨论】:

    • 在输入您的命令之前,我必须运行“RUN apt-get install tzdata”,但日期确实显示为纽约时间。谢谢!
    • 有趣。我认为tzdata 已经安装在基本映像中 - 但很高兴知道。 :)
    【解决方案2】:

    RUN apt-get install tzdata 是多余的。你可以使用EST5EDT

    编辑:虽然显然这可以完成这项工作,但请检查下面@Matt Johnson-Pint 评论中使用EST5EDT 而不是America/New_York 的微妙含义。
    感谢马特指出这一点。

    FROM microsoft/mssql-server-linux:latest
      
    RUN apt-get update
    RUN apt-get install unzip -y
    
    ENV TZ=EST5EDT
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    RUN date
    
    Step 6/6 : RUN date
     ---> Running in 6e270d42ef56
    Tue Jul 28 17:03:26 EDT 2020
    

    【讨论】:

    • EST5EDT 将没有 tzdb 中美国东部时间的完整历史记录。应该是America/New_York
    • 我将删除答案。感谢您的洞察力。
    • @MattJohnson-Pint,我已阅读此答案 (stackoverflow.com/a/54950640/13736525),并且我了解这样的事件 - 欧洲议会投票赞成取消夏令时 (DST) i> - 历史上不会由 UTC+1 跟踪,但会由 CET 跟踪。但是,从实际的角度来看,我不明白这将如何影响计算机系统。我可以在另一个帖子中问这个问题,还是你已经在其他地方回答过这个问题?谢谢!
    • 这个问题有点宽泛。在许多场景中,准确表示本地时间变化很重要。例如,安排约会。
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2020-01-29
    相关资源
    最近更新 更多