首页/云/Docker 容器速查/容器时间与 UTC 时差
容器排障52 条

容器时间与 UTC 时差

容器默认 UTC:日志与宿主差 8 小时是时区而非故障;用 TZ 环境变量设置时区,注意精简镜像可能缺时区数据。

Docker 容器速查云更新于 2026-10-13

容器时间差是怎么来的

容器默认使用协调世界时,日志与宿主差几个小时属于时区差异而不是故障。可以用环境变量指定时区,但要注意精简镜像可能没有包含时区数据,这种情况下设置了也不会生效。

基本信息

默认多数官方镜像为协调世界时
设置方式通过环境变量指定时区
依赖镜像内需包含时区数据
验证在容器内执行日期命令对比
适用平台所有 Docker 平台

典型使用场景

  • 核对日志时间与宿主不一致的问题
  • 应用对时间敏感时确认时区设置
  • 排查设置了时区却不生效的情况
  • 统一跨地域部署的时间口径
  • 分析测试环境与生产环境时区不同带来的现象

设置与核对

设置与核对
docker run --rm alpine date                          # 默认时间
docker run --rm -e TZ=Asia/Shanghai alpine date      # 指定时区
docker run --rm -e TZ=Asia/Shanghai alpine sh -c \
  'ls /usr/share/zoneinfo/Asia/Shanghai || echo 缺时区数据'
docker exec app date                                 # 运行中核对

关注点与注意事项

关注点默认表现注意
容器时间协调世界时与宿主可能有小时差
设置生效前提镜像内包含时区数据精简镜像常缺失
挂载宿主时区文件部分场景可用跨平台与滚动重启下不稳
展现层时间由应用决定建议统一口径后再转换
跨时区协作把容器统一用协调世界时、在展现层再转换,往往比逐个容器设置更容易维护。
把宿主时区文件挂进容器的方式在跨平台与滚动重启下不稳定,长期方案要重新评估。
设置时区后没有生效,先查镜像是否带时区数据,而不是怀疑命令写错。
定时任务类应用要特别确认时区口径,否则会在预期之外的时间点触发。
日志平台与容器的时间口径不一致时,排障要先确认采集与展示环节是否做了转换。
时区只在时间格式化与展示环节起作用,时间戳本身与时区无关;排查时间问题时先分清存的是时间戳还是本地时间字符串。

易错点

  • 设置时区后没有生效,先查镜像是否带时区数据,而不是怀疑命令写错
  • 挂载宿主时区文件的方式在跨平台与滚动重启下不稳定
  • 定时任务按错误时区触发,会在预期之外的时间点执行
  • 只看容器时间不看采集与展示环节的转换,排障结论会偏

数据来源与参考

  • Docker 官方文档:Environment variables 与镜像时区实践(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌