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

官方Elasticsearch Docker Compose示例无法运行问题求助

问题分析与解决步骤

1. 容器进程被Killed的核心原因:内存不足

日志中的Killed提示是系统OOM(内存不足)杀手终止了elasticsearch-keystore create进程。Elasticsearch对内存资源要求较高,官方默认配置可能超出当前主机的可用内存上限,导致进程被强制终止。

解决方法:

  • 调整Docker Compose中ES服务的JVM内存参数:在es01服务的environment字段中添加或修改以下配置:
    - ES_JAVA_OPTS=-Xms512m -Xmx512m
    
    根据主机实际可用内存调整数值,例如主机总内存为2GB时,设置为512MB或1GB较为合适。
  • 用free -h命令检查主机可用内存,确保有足够资源分配给ES容器。

2. 手动创建keystore导致bootstrap.password冲突的解决

当你手动创建elasticsearch.keystore并挂载到容器后,官方启动脚本会尝试自动设置bootstrap.password,但该密钥已存在于你手动创建的keystore中,引发冲突导致容器崩溃。

解决方法:

  • 方案一:让容器自动管理keystore
    删除本地手动创建的elasticsearch.keystore文件,确保挂载的config目录下无该文件,让容器启动脚本自动创建并配置keystore。配合上述内存调整后,重新启动容器。
  • 方案二:手动配置bootstrap.password
    若需手动管理keystore,执行以下步骤:
    1. 在本地创建keystore后,手动添加bootstrap.password:
      elasticsearch-keystore add bootstrap.password
      
      输入自定义密码后,将keystore文件挂载到容器的/usr/share/elasticsearch/config/目录。
    2. 在Docker Compose的es01服务中添加环境变量,禁用自动初始化密码:
      - ELASTIC_PASSWORD=你的自定义密码
      - DISABLE_SECURITY_INITIALIZATION=true
      
      注意此处密码需与手动添加到keystore的密码完全一致。

3. 其他排查方向

  • 检查Docker资源配额:确保Docker守护进程有足够的内存分配,Docker Desktop用户可在Settings->Resources中调整资源上限;Linux用户可通过修改Docker daemon配置文件调整。
  • 修正挂载目录权限:ES容器默认使用UID为1000的用户运行,需确保挂载的config目录及文件权限匹配,执行以下命令调整:
    chown -R 1000:1000 ./elasticsearch/config
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:57:19