Docker 镜像时区设置

Docker 镜像时区设置


Docker image时区设置错误或者未设置,现象就是应用录入数据库的数据和现有时间差8个小时。
起因:为了修复老的镜像漏洞,同时为了给镜像瘦身,做了一个新的docker镜像,下午研发说dev环境录入的数据差8小时,代码中使用了一个不带时区的方法插入数linux常用命令据库,中午才更新完新镜像,一想就系统运维主要做什么是这个问题,登录pod指定date发现时间是正确的。

新的Dockerfile中,只有下面命令

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

Dockerfile 时区设置

系统/运维改后的dockerfile时区正确docker安装,应用录入时间正确。

    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' > /etc/timezone \

参考别的文章

Java 时区设置

注意,如果能确保所在主机/etc/timezone内容正确,则不需要再对Java时区进行设置

TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(tz);


注释:/etc/lolinux系统安装caltime是用来描述本机时间,而 /etclinux命令/timezone是用来描述本机所属的时区

Linux 修改本机时区

在ldocker菜鸟教程inux中,有一些程序会自己计算时间,不会直接采linux用带有时区的本机时间格式,会根据UTC时间和本机所属的时区等计算出当前的时间。
比如jdk应用,时区为“Etc/UTC”,本机时间改为北京时间,通过java代码中new 出来的时间还linux虚拟机是utc时间,所以必docker和虚拟机的区别须得修正本机的时区。

echo 'Asia/Shanghai' >/etc/timezone