【发布时间】:2016-11-26 09:40:25
【问题描述】:
我正在尝试将 docker 容器的时区与我的主机同步。我的主机使用 ISM,docker 容器(使用 tomcat 映像)默认使用 UTC。我读到我们应该挂载一个卷来共享主机的时区:
$ docker run -t -i -p 8080:8080 -p 8090:8090 -v /etc/localtime:/etc/localtime:ro tomcat:7.0.69-jre8 /bin/bash
之后我可以检查检索到的日期是否与主机相同:
$ date
Fri Jul 22 13:53:45 IST 2016
当我部署我的应用程序并尝试更新日期时,我可以看到日期 22/07/2016 正在使用我的浏览器时区,这与运行 docker 容器的主机相同。但是调试应用程序的服务器端,我可以看到日期已转换为 UTC 时区。这意味着 docker 容器并没有真正使用我挂载的主机卷。
我错过了什么吗?
我尝试并完成工作的另一种方法是更新 docker 容器中的时区:
$ dpkg-reconfigure tzdata // Selecting the corresponding options afterwards
这样我可以在应用程序的客户端和服务器端看到相同的时区。
在此致谢
【问题讨论】:
-
听起来您已经列出了两种与 Docker 一起工作的方式,并且您的应用程序是有问题的部分?不确定我们如何调试您的应用程序,因为我们没有任何详细信息。
-
我确实列出了两种应该可行的方法,是的,应用程序似乎是有问题的一种。该应用程序是我部署到 tomcat docker 容器中的 GWT 应用程序,我向主机公开了端口,以便能够访问该应用程序并调试该应用程序(您可以在 docker 命令中看到端口 8080 和 8090)。我怀疑与 tomcat docker 容器一起提供的 jdk 出现了问题。