docker中解决DB2的系统时间时区问题
Dcoker
Linux
作者:dulucy
发布时间:2025-05-10 23:10:53

问题描述
今天在进行开发的时候发现数据库中的日志数据时间插入的不正常,明明是12点,但是数据库中查询出来接结果是3点,排查了一遍,发现使用
在数据库工具查询的结果也是3点。数据插入的sql是这样的:
因此这个问题还是在数据库中的问题。
考虑到数据库中的时间是根据所在系统获取的,本地电脑时区正常,考虑到DB2数据库实在docker中运行,因此考虑是docker容器的系统时间不正确。
通过 date -R 查询宿主机的时间是零时区时间,在网上查询到可以如下改变时区
经过这一操作后,发现宿主机的时区确实变成了东8区时间,但是在系统重新插入数据,在查询发现插入的时间仍然是零时区时间,一度怀疑是拉下来的DB2镜像问题导致的。与同事探讨同事认为这是系统时间的问题,不过不是宿主机的的时间,而是容器的时区问题。
顺着这个思路,同事开始修改容器的时区:
解决办法
1、连接容器DB2
2、查询/etc/localtime对应的信息
3、将 /usr/share/zoneinfo/Asiz/Shanghai 这个信息写入 /etc/localtime
4、重启 reboot
5、测试
再测试插入数据发现时间已经正常了。由此可见,docker中影响DB2的系统时间是容器的时间。
其他办法
在写这篇文章做记录的时候,查到了另外的两种方式,可以改变容器的时间:
1、在【宿主机】中执行命令:
2、在【宿主机】中执行命令,
这两个方法没有实验,不过应该是没有问题的,都是重写 /etc/localtime 的内容,不过需要注意的时,宿主机的时区也有可能不是东八区时区。建议先确定宿主机的时区,在进行操作。