Docker Java应用日志时间和容器时间不一致

摘要:

1)在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而国内系统为东八区。
2)还有容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差。
也就是容器时间和系统时间一致,但是部署的应用和容器时间不一致。Tomcat中部署java应用为例。

1、 docker新建容器时,为了保证容器时区和系统时区相同,需要挂载docker的/etc/localtime到系统的/etc/localtime

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

在系统路径 /usr/share/zoneinfo 下游很多时区文件,可以自己设置,copy时区文件到 /etc 重命名localtime文件即可,如果容器没有挂载时区目录到系统目录,也可进入容器内部手动复制/usr/share/zoneinfo下和系统时区相同文件,到/etc 重命名localtime文件
例如:使用上海时区
1)进入容器

docker exec -t -i c360cc412528 /bin/bash    // c360cc412528 为容器id

2)在/usr/share/zoneinfo目录下找上海时区

cd  /usr/share/zoneinfo/Asia(亚洲-)

3)复制上海时区到 /etc 重命名localtime文件

copy Shanghai /etc/localtime 

4)重启容器后,容器时间和系统时间一致。
注意:建议挂载docker的/etc/localtime到系统的/etc/localtime

2、 docker容器中运行的java应用打出的日志时间和通过date -R方式获取的容器标准时间有八个小时时间差。 java应用和容器时间不一致,相差8个小时。这时需要大家进入容器修改tomcat目录下的 lib/catalina 文件找到 JAVA_OPTS,增加下面设置:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"

重启容器,应用时间和容器时间就一致了。

注意下:进入容器后,有的人无法使用vim命令编辑,这时需要这么做:

   apt-get update    //同步 /etc/apt/sources.list和/etc/apt/sources.list.d中列出的源的索引,这样才能获取到最新的软件包。
   apt-get install vim   //安装vim包

之后就可以用vim编辑命令了。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值