You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows11下Docker-Compose中Elasticsearch容器时间同步问题

解决Windows11下Docker-Compose中Elasticsearch容器与本地时间同步问题

针对你遇到的Elasticsearch容器时钟回退警告(absolute clock went backwards by [636ms/636ms] while timer thread was sleeping),结合Windows11+Docker(WSL2后端)环境,按以下步骤解决:

1. 检查Docker Desktop时间同步配置

  • 打开Docker Desktop,进入Settings > Resources > Advanced
  • 勾选Sync time with host选项,点击Apply & Restart重启Docker

2. 修复WSL2后端时间同步(核心解决步骤)

Windows11上Docker默认使用WSL2后端,WSL2在系统休眠后常出现时间滞后,直接导致容器时间不同步:

  • 手动临时同步:打开任意WSL终端(如Ubuntu),执行命令:
    sudo hwclock -s
    
  • 自动永久同步:
    1. 在WSL中创建定时同步脚本:
      sudo nano /etc/cron.hourly/wsl-time-sync
      
    2. 写入以下内容并保存:
      #!/bin/bash
      hwclock -s
      
    3. 赋予脚本执行权限:
      sudo chmod +x /etc/cron.hourly/wsl-time-sync
      
    也可通过Windows任务计划,每小时执行一次wsl sudo hwclock -s,无需手动操作WSL。

3. 简化Elasticsearch的Docker-Compose配置

你之前手动安装tzdata的操作冗余,官方Elasticsearch镜像已支持TZ环境变量直接设置时区,无需root权限和自定义command:

elasticsearch:
  image: elasticsearch:8.10.2
  container_name: elasticsearch
  environment:
    - discovery.type=single-node
    - xpack.security.enabled=false
    - TZ=Europe/Moscow
    - ES_JAVA_OPTS=-Xms512m -Xmx512m
  ports:
    - '9200:9200'
    - '9300:9300'
  volumes:
    - es-data:/usr/share/elasticsearch/data

4. 验证时间同步效果

进入Elasticsearch容器执行date命令,对比本地Windows系统时间(注意Europe/Moscow为UTC+3时区):

docker exec -it elasticsearch date

确认时间一致后,重启Elasticsearch容器,检查日志是否仍有时钟回退警告。

内容的提问来源于stack exchange,提问作者Aliterego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:14:55