在 Linux 宿主机上设置时区和时间,最现代且推荐的方法是使用 timedatectl 命令。
通常时间不对是因为时区没设对。先将时区设置为北京时间:
Bash
# 设置时区为亚洲/上海
sudo timedatectl set-timezone Asia/Shanghai
执行以下命令查看系统时间、硬件时间以及时区是否生效:
Bash
timedatectl
输出示例:
Local time: 周一 2026-02-23 18:21:14 CST (这是你的本地时间)
Universal time: 周一 2026-02-23 10:21:14 UTC (世界标准时间)
Time zone: Asia/Shanghai (CST, +0800)
如果时区对了但具体分钟不对,可以手动设置(不推荐长期使用,建议用 NTP):
Bash
# 格式为 "YYYY-MM-DD HH:MM:SS"
sudo timedatectl set-time "2026-02-23 18:25:00"
为了保证时间永远准确,应该开启网络时间同步:
Bash
sudo timedatectl set-ntp true
一旦你完成了上述宿主机的设置:
如果你挂载了 /etc/localtime:容器会自动同步这个新设置。
如果你使用 TZ 环境变量:容器会忽略宿主机时间,强制走环境变量定义的偏移。