如何同步在 docker 容器上运行的 java 应用程序的时间?

Posted

技术标签:

【中文标题】如何同步在 docker 容器上运行的 java 应用程序的时间?【英文标题】:How to sync the time of a java application running on docker container? 【发布时间】:2016-04-04 16:43:31 【问题描述】:

我是这样的docker文件:

FROM anapsix/alpine-java:jre8 
ADD service-god-sac-1.0.0-SNAPSHOT.jar app.jar 
ENTRYPOINT ["java", "-Xmx64m", "-XX:MaxMetaspaceSize=64m", "-jar", "/app.jar"]

当我编译和部署应用时,使用这个设置时间:

-v /etc/localtime:/etc/localtime:ro

我注意到主机时间和容器时间是同步的,但是应用程序的日志显示了不同的时间,即 UTC 时间。 如何同时同步主机、容器和 java 应用?

【问题讨论】:

您可能对此讨论感兴趣:github.com/docker/docker/issues/3359 【参考方案1】:

映射本地时间和时区效果很好。

例子:

docker run -d -v /var/lib/elasticsearch:/var/lib/elasticsearch -v /etc/localtime:/etc/localtime:ro -v /usr/share/zoneinfo/America/Buenos_Aires:/etc/timezone:ro -p 80:80/tcp -p 9200:9200/tcp -p 514:514/udp petergrace/elk

【讨论】:

以上是关于如何同步在 docker 容器上运行的 java 应用程序的时间?的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器的备份和还原

docker 容器会自动与其主机同步时间吗?

如何以编程方式(在 Docker 上)获取运行容器的容器 ID?

如何让 Java 测试容器在 Docker 多阶段构建中工作?

Kubernetes:如何从 Docker 容器 A 在 Docker 容器 B 上运行 Bash 命令

运用mysql,docker进行主从同步