目录标题
你可以在 容器启动时 或者 容器运行中 设置时区,下面分别说明两种方法。
✅ 一、启动容器时修改时区(推荐)
方法1:挂载宿主机的时区文件
docker run -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Shanghai ...
/etc/localtime:/etc/localtime:ro:挂载宿主机时区文件。-e TZ=Asia/Shanghai:显式设置时区(配合某些支持读取TZ变量的基础镜像如alpine、ubuntu)。
举例:
docker run --rm \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Shanghai \
registry.woqutech.com/woqutech/sysbench:1.0.9-base \
date
方法2:使用 --env 变量设置(镜像支持 TZ 时)
docker run -e TZ=Asia/Shanghai ...
注意:某些基础镜像(如
busybox、alpine)可能不支持TZ,只设置-e TZ不一定生效,推荐配合localtime挂载。
✅ 二、运行中的容器内修改时区
步骤1:进入容器
docker exec -it <容器ID或名称> bash
步骤2:修改时区(取决于容器系统)
Ubuntu/Debian 容器
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone

Alpine 容器
apk add tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "Asia/Shanghai" > /etc/timezone
CentOS/RHEL 容器
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
✅ 查看容器时间验证
docker exec <容器名> date
✅ 最佳实践(总结)
| 场景 | 推荐方式 |
|---|---|
| 启动容器时设置时区 | -v /etc/localtime:/etc/localtime:ro -e TZ=Asia/Shanghai |
| 容器中运行时设置 | ln -sf /usr/share/zoneinfo/...,有时需先安装 tzdata |
| 镜像是 alpine | apk add tzdata 后设置 |
| 镜像是 ubuntu/centos | ln -sf 足够 |
如你使用的是 sysbench 或 python 环境,有时还需检查语言运行时的时区设置(如 Python 的 pytz, MySQL 客户端等),可以根据实际需求补充。需要我给你示例吗?
2705

被折叠的 条评论
为什么被折叠?



