Docker json-file日志驱动time字段为UTC,如何设置对应时区?
Docker json-file日志驱动time字段时区修改方案
问题原因
json-file日志驱动内的time字段由Docker守护进程(dockerd)收集容器日志时自动追加,读取的是宿主机上Docker运行环境的系统时间,与容器内部配置的TZ环境变量无关,因此默认会展示UTC时区时间。
解决方法
方案一:修改宿主机全局时区(推荐)
直接修改宿主机的系统时区,Docker daemon会默认继承系统时区:
- 主流Linux发行版通用修改命令:
timedatectl set-timezone Asia/Shanghai
可将Asia/Shanghai替换为你需要的对应时区编码 - 执行完成后重启Docker服务生效:
systemctl restart docker
提示:重启Docker服务会导致运行中的容器短暂中断,建议在业务低峰期操作。
方案二:仅修改Docker daemon运行时区(不改动宿主机全局配置)
如果不想修改宿主机全局时区,可单独为Docker进程配置时区:
- 编辑Docker的systemd服务配置文件,默认路径为
/usr/lib/systemd/system/docker.service - 在
[Service]配置段下添加时区环境变量:[Service] Environment="TZ=Asia/Shanghai" - 重载systemd配置并重启Docker服务生效:
systemctl daemon-reload systemctl restart docker
效果验证
配置完成后新创建启动的容器,生成的json日志中time字段会自动使用指定时区的时间戳,已存在的旧容器需要删除重建后才会生效,历史已生成的日志内容不会被修改。
内容的提问来源于stack exchange,提问作者relevantRope
相关产品推荐
相关产品推荐

