产生原因:
遇到docker时间不一致,大多情况下是因为默认时区没有设置导致的。一般在宿主机上使用的是 CTS 时间,docker容器内部使用的是 UTC 时间,可以通过date
命令查看系统时区:
CTS
: China Standard Time,UTC+8:00 中国沿海时间(北京时间)
UTC
: Universal Time Coordinated 世界协调时间
两个时区之间相差8个小时。
解决方法:
方法一:共享主机的localtime
创建容器的时候指定启动参数,挂载localtime文件到容器内 :
docker run --name <name> -v /etc/localtime:/etc/localtime:ro ....
方法二:复制主机的localtime
如果本机时区正确直接:
docker cp /etc/localtime 【容器ID或者NAME】:/etc/localtime
如果本机时区不正确:
docker cp /usr/share/zoneinfo/Asia/Shanghai 【容器ID或者NAME】:/etc/localtime
方法三:创建自定义的dockerfile
如果是你的镜像是自己Dockerfile编译的,那么在你的Dockerfile中添加一下内容:
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
方法四:增加启动环境变量
docker run 的时候增加环境变量 -e TZ=Asia/Shanghai
(有时不好用)
参考文献:
[1] https://blog.csdn.net/catoop/article/details/89737861
[2] https://www.jb51.net/article/99906.htm
[3] https://blog.csdn.net/qq_27295403/article/details/82256017
[4] https://www.jianshu.com/p/24e7507fd576