前言

服务器全服务Docker化有一段时间了,发现一个严重问题,Docker容器中的时间比我们一般说的北京时间普遍慢了8小时。导致Mysql大量数据、Java定时任务等都出现时间的异常。经过调查,发现Docker容器中的Linux系统普遍使用的是标准UTC时间,而我们所在的位置是东八区,也就是GMT+8,比标准UTC快8小时。所以永久解决的方法就是把容器中的Linux系统的时区改为上海即可。



方案

以下代码参考简书文章: https://www.jianshu.com/p/6c9aef17968d

一、 进入容器

  1. docker exec -it 容器ID bash

二、 修改本地时区

  1. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  2. echo "Asia/Shanghai" > /etc/timezone

三、退出容器

  1. exit

四、重启容器

  1. docker restart 容器ID

最后进入容器查看当前时间

  1. docker exec -it 容器ID bash
  2. date -R


END