Docker Compose部署TheHive/Cortex时Elasticsearch本地端口无法访问问题
问题根因
当前docker-compose.yml中elasticsearch服务块未配置ports端口映射规则,容器仅对加入同一Hive自定义桥接网络的内部服务(Cortex)开放9200、9300端口,不会绑定到宿主机网卡,因此宿主机无法检测到对应端口监听,也无法直接访问Elasticsearch接口。
操作步骤
- 编辑
docker-compose.yml文件,在elasticsearch服务配置段(与environment、ulimits配置同级)添加端口映射规则:
elasticsearch: container_name: elasticsearch image: elasticsearch:7.11.1 # 新增端口映射配置 ports: # 允许所有来源(包括公网)访问ES时使用以下配置 - '0.0.0.0:9200:9200' - '0.0.0.0:9300:9300' # 仅允许Ubuntu宿主机本地访问ES时,注释上面两行,启用以下两行配置 # - '127.0.0.1:9200:9200' # - '127.0.0.1:9300:9300' environment: - http.host=0.0.0.0 - discovery.type=single-node - cluster.name=hive - script.allowed_types= inline - thread_pool.search.queue_size=100000 - thread_pool.write.queue_size=10000 - gateway.recover_after_nodes=1 - xpack.security.enabled=false - bootstrap.memory_lock=true - ES_JAVA_OPTS=-Xms256m -Xmx256m # 其余原有ulimits、volumes、networks配置保持不变
- 保存配置文件后,在
docker-compose.yml所在目录执行以下命令重建Elasticsearch容器,让配置生效:docker compose up -d elasticsearch - 验证配置生效:
- 执行
docker compose ps,查看PORTS列,Elasticsearch条目应显示0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp格式的映射记录 - 执行
netstat -tulpn | grep -E '9200|9300',可查询到宿主机对应端口的监听进程 - 宿主机本地执行
curl http://127.0.0.1:9200,返回Elasticsearch集群基础信息即为访问正常
- 执行
注意事项
由于服务部署在AWS Ubuntu实例上,若配置0.0.0.0端口映射对公网开放,需要同步在对应实例的安全组规则中放通9200、9300端口。当前配置中
xpack.security.enabled=false为关闭Elasticsearch安全认证状态,公网暴露无认证的ES实例存在数据泄露、被恶意篡改的风险,生产环境不建议直接对公网开放。
内容的提问来源于stack exchange,提问作者Adam Henry
相关产品推荐
相关产品推荐

