问题解决方案: 容器时间与宿主机时间不一致

产生原因:

遇到docker时间不一致,大多情况下是因为默认时区没有设置导致的。一般在宿主机上使用的是 CTS 时间,docker容器内部使用的是 UTC 时间,可以通过date命令查看系统时区:
CTS: China Standard Time,UTC+8:00 中国沿海时间(北京时间)
UTC: Universal Time Coordinated 世界协调时间
两个时区之间相差8个小时。


解决方法:

方法一:共享主机的localtime

创建容器的时候指定启动参数,挂载localtime文件到容器内 :

docker run --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

你可能感兴趣的:(问题解决方案: 容器时间与宿主机时间不一致)