1

Docker 镜像时区设置

 2 years ago
source link: https://blog.51cto.com/215687833/5261867
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Docker 镜像时区设置

原创

青衫解衣 2022-04-29 15:47:03 博主文章分类:Docker/K8S ©著作权

文章标签 docker Docker 镜像时区设置 文章分类 Linux 系统/运维 阅读数482

Docker 镜像时区设置

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

新的Dockerfile中,只有下面命令

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

Dockerfile 时区设置

修改后的dockerfile时区正确,应用录入时间正确。

&& 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/localtime是用来描述本机时间,而 /etc/timezone是用来描述本机所属的时区

Linux 修改本机时区

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

echo 'Asia/Shanghai' >/etc/timezone

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK