docker容器的时区早已更改为东八区了puppy linux,而且容器中的java应用打出的log日志时间一直和北京时间有很大的时间差docker log,因而红旗linux操作系统,写了一段代码来测试
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程序
exportTZ=Asia/Shanghai(讲到/etc/profile文件中之后重启系统生效)
再运行java测试程序docker log,结果变为
二、使用-Duser.timezone=GMT+08作为Java虚拟机的系统参数