一、系统配置
docker 版本:4.67.0
镜像:pgvector/pgvector:pg16
宿主机OS:Windows 11 家庭中文版
二、现象
1.容器OS和logs时间为UTC时间,宿主机时间为东8区,容器内时间比宿主机时间早8小时。
三、处理方法
1.修改容器OS时间为东8区
进入容器shell:
dockerexec-it<你的容器名>/bin/bash执行以下命令:
# 1. 删除当前的本地时间配置(建议原文件备份)
sudorm-f/etc/localtime# 2. 创建指向北京时区文件的软链接(执行前先查看确认/usr/share/zoneinfo/Asia/路径下是否有“Shanghai”)
sudoln-s/usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 3. 验证(使用 date 命令查看时间偏移)
datedate 命令应显示 CST(中国标准时间)。
2.容器内PostgreSQL应用首次启动会参照OS快照设置时间,默认设置为UTC时间,即使后面OS时间修改了,重启容器也不会自动修改logs时间,需要手动进行如下操作
# 1. 查看容器挂载Volume
打开Docker Desktop/Inspect/Mounts,“Name”中的内容为本容器挂载的卷号
# 2. 修改配置文件
打开Docker Desktop/Volumes,找到刚才的卷号,单击卷号
卷内找到postgresql.conf文件,修改文件内如下内容:
timezone = ‘Asia/Shanghai’
log_timezone = ‘Asia/Shanghai’
保存修改,重启容器,完成。