docker容器时间不同步导致在java应用中获取的时间不正确问题

一、前言

在把Java应用部署到docker容器时,发现应用获取到的时间和现实时间相差了8个小时,会导致一系列不必要的麻烦。

二、解决方案

1、首选需要确保宿主机的时区和时间的准确

现在宿主机上用 date -R 看一下时区是否为东八区(末尾有+0800)

2、若宿主机时区或者时间不准确,可以用date/ntpdate和tzdata同步一下时间以及更改时区
date命令:
date                	#查看当前时间,结果如下:2017年 01月 06日 星期五 13:02:55 CST
date -s 14:03:35		#设置当前时间,结果如下:2017年 01月 06日 星期五 14:03:35 CST
date -s 2017-01-08    	#设置当前日期,结果如下:2017年 01月 08日 星期五 00:00:00  CST
ntpdate命令:
ntpdate -u 210.72.145.44   #网络时间同步命令

注意:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found

-u:从man ntpdate中可以看出-u参数可以越过防火墙与主机同步;

210.72.145.44:中国国家授时中心的官方服务器。

ntp常用服务器:

中国国家授时中心:210.72.145.44

NTP服务器(上海) :ntp.api.bz

经测试中国国家授时中心与NTP上海服务器可以正常同步时间,注意需要加上-u参数!

时区修改:

使用tzselect, 选择到China/Shanghai即可

若显示未安装tzselect,可以安装一下tzdata

yum install tzdata 	#centos
apt-get install tzdata 	#ubuntu
3、复制宿主机上的zoneinfo文件夹到容器下的/usr/share/目录下。
 docker cp /usr/share/zoneinfo 容器名称:/usr/share/
2、进入到容器中
 docker exec -it 容器名称 /bin/bash
3、创建软连接,修改时区。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
4、查看时间,进行测试。
date -R

参考文章:

如何调整Linux系统为正确时区 | 《Linux就该这么学》 (linuxprobe.com)

linux中同步时间的命令是什么 - CSDN

修改docker的时间_在路上的阿帅的博客-CSDN博客_docker 修改时间

原文地址: docker容器时间不同步导致在java应用中获取的时间不正确问题 - Aunero’s Blog

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值