一、问题及背景
在平时使用docker部署服务时,经常会遇到已经将服务部署了一大部分了,突然发现系统的时间不对,经过排查发现结果是docker的时区错了,对于大多数docker镜像而言,默认的时区是UTC,当然如果在最开始创建容器的时候如果知道此问题的存在,可以通过挂载等方式解决这个问题,但是现在可能已经配置了许多配置了,如果重新创建容器似乎显得不太合适,尤其是对那些一般不需要重新创建的,即一次性部署的,比如数据库等,此时就需要在docker已经运行的情况下,用最小的代价去修改docker的时区
二、解决办法
(1)进入docker容器中
docker exec -it xxx bash
(2) 查看当前docker的时区
cat /etc/timezone
不出意外,此时可以看到时区为UTC
(3)修改时区
因为docker中很有可能没有vi或者vim工具,此时可以通过重定向修改文件内容
echo "Asia/Shanghai" > /etc/timezone
(4)修改localtime文件内容
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(5)退出docker后,重启
-
exit
-
docker restart xxx
正常情况下,此时时区已经修改过来了,可以通过date命令查看当前是否为东八区时间
date