linux new date差8个小时,柚子生活-解决Docker容器new Date()时间比北京时间早八个小时问题...
前言
为了知道Docker容器有没有正常启动,于是我就把Docker容器的一些信息写入redis。其中有一个数据是new Date()获得的启动时间,以容器方式部署在linux上面发现这个启动时间比北京时间早了八个小时。很自然的想到安装linux的时候时间没有配置成北京时间。
CentOS修改默认时间
把linux时间配置成北京时间(也就是中国标准时间或者东八区时间或者上海时间叫法很多)。ln -sf /usr/share/zoneinfo/PRC /etc/localtime #创建一个软链接
然后查看时间timedatectl[root@localhost bin]# timedatectl
Local time: Tue 2020-05-12 16:44:26 CST
Universal time: Tue 2020-05-12 08:44:26 UTC
RTC time: Tue 2020-05-12 08:44:26
Time zone: PRC (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
修改完毕,把之前的容器停止删除,然后重新启动一个容器。发现没有生效。
进入容器终端查看时间docker exec -it [容器id] sh
这边还是早了八个小时。[root@localhost bin]# docker exec -it c645 sh
/ # date
Tue May 12 07:48:15 UTC 2020
很自然的想到应该是容器时区问题了。
通过-v参数启动容器
然后是在网上查阅有关Docker容器时间早了八个小时问题。很多帖子说启动加一个参数-v /etc/localtime:/etc/localtime:ro
于是我又开始测试[root@localhost ~]# docker run -d -p 5200:5200 -v /etc/localtime:/etc/localtime:ro 8c8d46b8a6f0
616147ff9928e366b87b3850c7446564dd5c9a59da347c5f543099466d2aa06c
[root@localhost ~]#
[root@localhost ~]# docker exec -it 6161 sh
/ # date
Tue May 12 16:17:51 CST 2020
奇迹发现了。进入终端date查看的时间是对了。
但是,redis记录的时间还是早了八个小时redis时间:2020-05-12 08:17:36
于是又开始网上搜索资料
通过Dockerfile配置参数
在Dockerfile添加以下内容ENV TIME_ZONE PRC
RUN apk add --no-cache tzdata && \
echo "${TIME_ZONE}" > /etc/timezone && \
ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime
参数说明:
ENV TIME_ZONE PRC
定义环境变量TIME_ZONE值为PRC,PRC是中华人民共和国的意思。意思是把时区设置成了中国标准时间。
更多的时区可以这样查询ls /usr/share/zoneinfo
apk add --no-cache tzdata
安装zddata时区配置信息安装包,安装完成后会在/usr/share/zoneinfo目录下生成世界各地的时区配置信息。
echo "${TIME_ZONE}" > /etc/timezone
把时区"PRC"写入文件/etc/timezone,8-jdk-alpine镜像里面没有/etc/timezone,这个文件是让new Date()获得的时间为环境变量配置的时间。
ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime
创建软链接修改本地默认时区为"PRC",8-jdk-alpine镜像里面同样没有/etc/localtime,这个文件的作用应该就是跟上面-v参数一样了。
思考
把时区写死在环境变量中感觉不好,要怎么才可以获得宿主机的时区呢?
linux new date差8个小时,柚子生活-解决Docker容器new Date()时间比北京时间早八个小时问题...相关推荐
- UTC时间与北京时间的差多久
https://zhidao.baidu.com/question/584155849371920925.html 经常混淆于此,特地研究了一下,记录在此以备忘. 整个地球分为二十四时区,每个时区都有 ...
- Linux系统问题 - 系统时间与北京时间相差12个小时
昨天在Crond服务中加了定时任务执行gitlab的自动备份,早上发现任务没有执行,发现是时差的问题 需要将系统的时间从EDT修改为CST [root@localhost ~]# date Tue J ...
- 设置linux时间为北京时间
文章转载于: 1.https://blog.csdn.net/u010316188/article/details/79503376?utm_source=blogxgwz9 2.https://bl ...
- 【Windows】解决windows系统时间与北京时间相差8小时
问题: 私有云上的windows server虚拟机(有外网)时间老是不对,与北京时间相差8小时. 解决办法: 1.见博客: https://blog.csdn.net/yasyal515/artic ...
- linux修改系统时间为北京时间(CentOS)
删除本地时间 rm -rf /etc/localtime 设置时区为上海 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 利用date查看 ...
- linux docker启动指定字符集,【字符集】解决docker 容器中中文乱码问题
一个后端服务容器中解压zip包,释放出带文件名带中文的文件,中文显示被?代替,初步推断是服务基础镜像系统字符集出现问题. 进入容器中端界面,手动创建带中文的文件,果不其然,中文显示被?代替了! 进入容 ...
- 设置linux系统时间为北京时间
删除自带的localtime rm -rf /etc/localtime 创建软链接到localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/lo ...
- 美国 纽约 纽约时间与北京时间24小时时差对照表
http://www.timedate.cn/worldclock/city.asp?n=448 来自 " ITPUB博客 " ,链接:http://blog.itpub.net/ ...
- new date.gettime 与传入时间相差毫秒数不对_给女票解释为什么日本时间比中国时间快一个小时?...
马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程.女朋友听说日本5月份可以看樱花,于是她在看去日本的航班.我在旁边默默的看了下我的信用卡额度. 如上图,飞机13:40 ...
最新文章
- Veritas推出全多云环境新技术
- matlab工作路径
- pthread_cond_singal condition
- Python3 正则表达式特殊符号及用法(详细列表)
- OpenGL和D3D11中的深度模版测试
- 部署GitLab代码托管仓库
- java数组基本操作
- 简明 Python 教程
- Opencv 移植 (亲测有效)
- C# .net实现发送手机短信功能
- 云计算是用来做什么的
- ChemDraw怎么调整键长?调整键长教程
- AR涂涂乐⭐七、(end)取消“识别成功”提示面片、加入太阳系及其交互功能、退出按钮设置
- html中js图标点赞,js实现简单点赞操作
- 哈哈,word 多少页 一千字?
- 几款常用压测工具介绍与使用
- unity3D学习之音频数据的采集要点-audio菜鸟笔记6
- eclipse建maven项目报: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0
- 3.MyBatis源码解析-CRUD执行流程--阿呆中二
- The Pilots Brothers‘ Refrigerator(高效贪心)
热门文章
- python爬取斗鱼当前英雄联盟主播排名
- [附源码]Java计算机毕业设计SSM共享汽车管理系统
- 软考高级-系统架构师-系统安全分析与设计
- 鼠标键盘与计算机无法连接,只有三个步骤可以轻松解决无法识别计算机,键盘和鼠标的问题!...
- 苹果电脑忘记开机密码快速恢复的方法!
- 公开课丨进阶软件测试大牛!接口测试一课通
- 酒店管理系统数据库搭建
- Excel:将图片制作成九宫格形式
- WorldFirst官网无法访问?万里汇WorldFirst官网域名变更!
- unsupport conversion from timestrap to lang