容器里时间差 8 小时
容器里 date 出来是 UTC,-e TZ=Asia/Shanghai 明明传了。原因通常有两个。
一是镜像里没有 /usr/share/zoneinfo,Alpine、distroless、scratch 都这样。TZ 只是个指针,指向的时区文件不存在就退回 UTC。装 tzdata 或者把宿主机的 zoneinfo 挂进去:
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro
二是程序自己不认 TZ,读的是 /etc/localtime。Java 尤其典型,还得加 -Duser.timezone=Asia/Shanghai。
要分清“系统时间”和“显示时区”:内核里的时间是 UTC,改容器时区只是改显示,别指望它修正已经跑偏的时钟。