为何Docker容器时间比Windows主机晚2周?如何实现时间同步?
问题原因
Windows环境下Docker容器默认运行在WSL2或Hyper-V内置虚拟机中,观测到的时间偏移本质是底层虚拟机与Windows主机的时间不同步,与容器本身、docker-compose服务重启无关,大多由主机长时间休眠/睡眠后恢复触发的虚拟机计时偏移导致。
解决方法
- 临时快速修复:完全退出Docker Desktop后重新启动,底层虚拟机会自动同步主机时间,启动完成后重新进入容器执行
date即可看到时间恢复正常。
如果不想重启Docker服务,使用WSL2后端的用户可以直接在Windows终端执行命令同步:wsl -d docker-desktop hwclock -s
使用Hyper-V后端的用户可以打开Hyper-V管理器,找到Docker Desktop对应的虚拟机,在集成服务设置中确认「时间同步」选项已勾选。 - docker-compose配置补充:可以在服务配置中添加本地时间文件挂载,强制容器与宿主保持时间一致,配置示例如下:
services: 你的服务名: # 其余原有配置保持不变 volumes: # 新增以下两行挂载配置 - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro
修改配置后执行docker-compose up -d重建容器即可生效。
- 避免重复出现问题:优先开启Docker Desktop的WSL2引擎,时间同步稳定性优于Hyper-V;尽量避免主机长时间休眠后恢复运行容器,如果必须休眠,唤醒后执行一次上述同步操作即可。
内容的提问来源于stack exchange,提问作者be2213444
相关产品推荐
相关产品推荐

