前言

为了知道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()时间比北京时间早八个小时问题...相关推荐

  1. UTC时间与北京时间的差多久

    https://zhidao.baidu.com/question/584155849371920925.html 经常混淆于此,特地研究了一下,记录在此以备忘. 整个地球分为二十四时区,每个时区都有 ...

  2. Linux系统问题 - 系统时间与北京时间相差12个小时

    昨天在Crond服务中加了定时任务执行gitlab的自动备份,早上发现任务没有执行,发现是时差的问题 需要将系统的时间从EDT修改为CST [root@localhost ~]# date Tue J ...

  3. 设置linux时间为北京时间

    文章转载于: 1.https://blog.csdn.net/u010316188/article/details/79503376?utm_source=blogxgwz9 2.https://bl ...

  4. 【Windows】解决windows系统时间与北京时间相差8小时

    问题: 私有云上的windows server虚拟机(有外网)时间老是不对,与北京时间相差8小时. 解决办法: 1.见博客: https://blog.csdn.net/yasyal515/artic ...

  5. linux修改系统时间为北京时间(CentOS)

    删除本地时间 rm -rf /etc/localtime 设置时区为上海 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 利用date查看 ...

  6. linux docker启动指定字符集,【字符集】解决docker 容器中中文乱码问题

    一个后端服务容器中解压zip包,释放出带文件名带中文的文件,中文显示被?代替,初步推断是服务基础镜像系统字符集出现问题. 进入容器中端界面,手动创建带中文的文件,果不其然,中文显示被?代替了! 进入容 ...

  7. 设置linux系统时间为北京时间

    删除自带的localtime rm -rf /etc/localtime 创建软链接到localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/lo ...

  8. 美国 纽约 纽约时间与北京时间24小时时差对照表

    http://www.timedate.cn/worldclock/city.asp?n=448 来自 " ITPUB博客 " ,链接:http://blog.itpub.net/ ...

  9. new date.gettime 与传入时间相差毫秒数不对_给女票解释为什么日本时间比中国时间快一个小时?...

    马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程.女朋友听说日本5月份可以看樱花,于是她在看去日本的航班.我在旁边默默的看了下我的信用卡额度. 如上图,飞机13:40 ...

最新文章

  1. Veritas推出全多云环境新技术
  2. matlab工作路径
  3. pthread_cond_singal condition
  4. Python3 正则表达式特殊符号及用法(详细列表)
  5. OpenGL和D3D11中的深度模版测试
  6. 部署GitLab代码托管仓库
  7. java数组基本操作
  8. 简明 Python 教程
  9. Opencv 移植 (亲测有效)
  10. C# .net实现发送手机短信功能
  11. 云计算是用来做什么的
  12. ChemDraw怎么调整键长?调整键长教程
  13. AR涂涂乐⭐七、(end)取消“识别成功”提示面片、加入太阳系及其交互功能、退出按钮设置
  14. html中js图标点赞,js实现简单点赞操作
  15. 哈哈,word 多少页 一千字?
  16. 几款常用压测工具介绍与使用
  17. unity3D学习之音频数据的采集要点-audio菜鸟笔记6
  18. eclipse建maven项目报: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0
  19. 3.MyBatis源码解析-CRUD执行流程--阿呆中二
  20. The Pilots Brothers‘ Refrigerator(高效贪心)

热门文章

  1. python爬取斗鱼当前英雄联盟主播排名
  2. [附源码]Java计算机毕业设计SSM共享汽车管理系统
  3. 软考高级-系统架构师-系统安全分析与设计
  4. 鼠标键盘与计算机无法连接,只有三个步骤可以轻松解决无法识别计算机,键盘和鼠标的问题!...
  5. 苹果电脑忘记开机密码快速恢复的方法!
  6. 公开课丨进阶软件测试大牛!接口测试一课通
  7. 酒店管理系统数据库搭建
  8. Excel:将图片制作成九宫格形式
  9. WorldFirst官网无法访问?万里汇WorldFirst官网域名变更!
  10. unsupport conversion from timestrap to lang