Docker——时间配置

一、常用时间表示

  1. GMT(Greenwich Mean Time):格林威治时间,格林威治被定义为了(0^o)经线开始的地方,地球每15进度分为一个时区,共24个时区,相邻时区相差1个小时.中国位于东八区,全国统一采用北京时间,比GMT时间快8小时
  2. UTC(Coordinated Universal Time):世界协调时间,由于使用了原子钟,是比GMT更为精确的计时.
  3. CST(China Standard Time):中国标准时间,以北京时间为标准,比UTC时间多8个小时

二、Docker中的时间

  1. 之前旧的数据库由于服务器到期而被删了,后来自己又通过docker重新装了一个5.6版本的数据库.后来在项目中意外地发现所用的时间居然是错误的.当前时间是2021/3/12 14:21 ,使用SELECT NOW()指令查看时间image-20210312142159232,可以看到时间刚好差了8个小时.
  2. 为了了解mysql的时间配置,我们可以使用show variables like "%time_zone%"命令查看相关的配置image-20210312142457626.根据第一块内容可以了解到是由于直接采用了UTC时间所以才导致时间的误差,解决的办法是修改相应的配置文件,在其后添加default-time_zone='+8:00'即可.这样做确实是解决了问题.
  3. 然而,很快我发现根本原因并不在于Mysql自身.因为在同学的主机上使用相应的指令却发现时间是正确的,显然Mysql的时间大概率是和操作系统相适应的,所以我猜测根本问题还是docker生成的容器(也可以相当于一台主机)时间有问题.果然,在主机上使用date命令发现确实如此.根据相关的blog,在/usr/share/zoneinfo/Asia文件夹下找到Shanghai时区的配置,通过cp -i Shanghai /etc/localtime命令直接对本地的时区进行了覆盖,将对应的容器restart之后,成功解决!image-20210312152019237
原文地址:https://www.cnblogs.com/Arno-vc/p/14524170.html