容器时区时间修正
容器内时间少 8 小时,通常是由于 时区未设置正确,默认使用了 UTC(协调世界时),而中国时区是 UTC+8。
解决方案
方法 1:挂载宿主机的时区配置
如果宿主机的时间是正确的(比如已经设置为 Asia/Shanghai),可以直接在 docker run 或 docker-compose 中挂载时区相关文件:
1 | volumes: |
或者 CLI 启动:
1 | docker run -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro ... |
方法 2:设置环境变量 TZ
很多基础镜像(如 alpine, ubuntu, debian, nginx, mysql 等)支持通过环境变量设置时区:
1 | environment: |
或 CLI:
1 | docker run -e TZ=Asia/Shanghai ... |
方法 3:容器内手动设置(不推荐,容器重启会失效)
如果你已经进入容器,可以手动安装 tzdata 并配置:
1 | # 适用于 debian / ubuntu |
检查时间
进入容器后使用以下命令查看时间:
1 | date |
推荐
在 Dockerfile 中设置:
1 | ENV TZ=Asia/Shanghai |
并结合 volume 方式确保宿主机时区同步:
1 | volumes: |