docker容器的时区早已更改为东八区了puppy linux,而且容器中的java应用打出的log日志时间一直和北京时间有很大的时间差docker log,因而红旗linux操作系统,写了一段代码来测试

import java.sql.Timestamp;
import java.util.TimeZone;

dockerlogo_dockerlogin命令_docker log

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); } }

发觉结果为:

dockerlogin命令_dockerlogo_docker log

结果显示java程序输出的是纽约时区的时间,说明java并没有直接从docker容器中获取时间。这些情况有两种解决方案:一、使用TZ环境变量,之后再运行Java程序

exportTZ=Asia/Shanghai(讲到/etc/profile文件中之后重启系统生效)

dockerlogo_docker log_dockerlogin命令

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

dockerlogin命令_docker log_dockerlogo

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

docker log_dockerlogo_dockerlogin命令

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复