在docker容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差~

因为docker容器的原生时区为0时区,为了和国内时区保持一致,需要把容器时区调为东八区,方法非常简单,在/usr/share/zoneinfo目录下面有大量的时区文件,涵盖各个时区,根据自己的需求直接把对应的文件拷贝到/etc目录下,重命名为localtime文件即可。

随后发现一个问题,虽然docker容器的时区已经修改为东八区了,但是容器中的java应用打出的log日志时间仍然和上海时间有很大的时间差,因此,写了一段代码来测试

import java.sql.Timestamp;
import java.util.TimeZone; public class test { public static void main(String [] args){
TimeZone tz = TimeZone.getDefault();
System.out.println("tz: " + tz);
Timestamp curTime = new Timestamp(System.currentTimeMillis());
System.out.println("时间: " + curTime);
} }

发现结果为:

结果显示java程序输出的是洛杉矶时区的时间,说明java并没有直接从docker容器中获取时间。这种情况有两种解决方案:

一 、使用TZ环境变量,然后再运行Java程序

export TZ=Asia/Shanghai(写到/etc/profile文件中然后重启系统生效)

再运行java测试程序,结果变为

二、使用 -Duser.timezone=GMT+08 作为Java虚拟机的系统参数

docker容器修改时区(java应用log信息与标准容器时间有八个小时时间差)的更多相关文章

  1. 修改Docker容器默认时区

    运行docker容器默认时区为0区 # 运行一个nginx服务器 docker run -d -p 80:80 --name nginx nginx # 进入容器shell docker exec - ...

  2. docker容器修改hosts文件,重启失效问题解决

    docker容器修改hosts文件 搜了一大批资料,有说需要在docker run --hosts...改:dockerfile改:有点麻烦,下面方案比较好: 参照docker吧(https://ti ...

  3. 修改alpine Linux的Docker容器的时区

    适用对象 使用 Alpine Linux 发行版的 Docker 镜像容器. 仅仅适用于没有安装uclibc的系统. 修改步骤 进入容器命令行 # docker exec -it container_ ...

  4. Docker修改时区

    简介 docker容器打日志时间滞后8小时 方法 启动时修改时区 Docker修改默认时区 已启动的容器修改时区 进入容器docker exec -i -t [CONTAINNER] /bin/bas ...

  5. 【云计算】Docker容器不能修改hosts文件怎么解决?

    参考资料: http://bbs.csdn.net/topics/390871429 http://tieba.baidu.com/p/4295556808 http://stackoverflow. ...

  6. Zabbix-(五)监控Docker容器与自定义jvm监控项

    Zabbix-(五)监控Docker容器与自定义jvm监控项 一.前言 前文中讲述了Zabbix对服务器硬件方面的监控功能,本文将讲述利用Zabbix监控Docker容器中的Java Web服务,并通 ...

  7. [转帖]Docker中的时区问题处理

    Docker中的时区问题处理 这两天在打docker的时候,发现自己的容器启动之后,里面date -R的输出时区是UTC,总是和北京时间差了8个小时. 作者:云平台运维开发来源:今日头条|2019-0 ...

  8. 从容器里dump java堆实验探索(原创)

    目标:从docker容器里dump java堆 模拟程序 占用空间500M, 设置启动JVM参数 docker启动命令 (PS:经过测试,至少要650M才能启动容器) 方式1: 通过docker ex ...

  9. 解决netcore在docker容器中连接oracle报错(timezone region not found)

    错误提示: timezone region not found错误原因:docker 容器内时区不是 CST 导致解决办法:1.在dockerfile 中增加一下命令ENV TZ=Asia/Shang ...

随机推荐

  1. WKWebView中HTML5获取位置失败

    WKWebView中HTML5获取位置失败,在info.plist文件中添加以下代码打开网页时就会询问是否允许获取位置信息了. <key>NSLocationAlwaysUsageDesc ...

  2. SVM的新理解

    svm导出的原始问题然后利用KKT条件,为何还需要对偶空间? 一方面,实际上KKT条件怎么得到的?KKT条件的推导是:svm原始问题->极大极小问题(先算极小这步,但极小这步中α是有约束的,不好 ...

  3. CTF-练习平台-Misc之 Telent

    三.Telent 下载下来文件,解压压缩包,用记事本打开pcap文件,发现flag

  4. Chrome在Ubuntu中缺少依赖项,无法安装

    在Ubuntu 13.04中,安装chrome会报下面这个错误(不知是不是因为我没有更新的原因:(  ): 也就是缺少名为libxss1的包. 解决办法,当然可以很简单的去找libxss1这个包下载, ...

  5. ORTP&&RTSP

    ortp为了提高实时性使用UDP发送 rtsp建立了一个TCPserver,等待客户端连接,此时打开VLC播放器-->打开网络串流-->输入rtsp地址,会请求RTSP Server建立一 ...

  6. RTSP HTTP RTP RTCP

    RTSP简介 RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议.RTSP对流 ...

  7. Oracle活动会话历史(ASH)及报告解读

    对于数据库运行期间的各种状态的实时监控以及相关性能数据捕获对于解决性能问题,提高整体业务系统运行效率是至关重要的.在Oracle数据库中,实时捕获相关性能数据是通过ASH工具来实现的.ASH通过每秒钟 ...

  8. POJ2955Brackets——dp

    题目:http://poj.org/problem?id=2955 1.考虑区间. 2.当前区间可为自己子区间的和(题意果然是和而非最大值). 3.考虑当前区间的边界. #include<ios ...

  9. CC2530中串口波特率改为9600时单个数据包来不及接收的解决方案

    在调试CC2530过程中发现波特率改为9600时,单个包仅有3个Byte时,接收DMA就会启动 因而数据包被强迫拆分成多个,显然只要将接收DMA启动延时做到足够大即可. 具体修改内容如下图所示: 经过 ...

  10. opencv中的洪水填充算法

    在图像处理里,如果我们需要填充一个区域,使该区域为相同的颜色,则比较常用的是洪水填充法.洪水填充法可以用DFS也可以用BFS实现. opencv下有函数实现该功能: CVAPI(void) cvFlo ...