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

Ubuntu下Docker容器内访问宿主机localhost:9208的Elasticsearch失败求助

解决方案

要在Ubuntu 22.04的Docker容器内访问宿主机SSH隧道映射的Elasticsearch实例,需完成以下两步:

1. 调整SSH隧道的本地绑定地址

默认情况下,SSH隧道的本地端口仅绑定宿主机的127.0.0.1,这意味着只有宿主机自身能访问该端口,容器无法通过宿主机内网IP连接。

修改你的SSH隧道命令,将本地绑定地址改为0.0.0.0(监听宿主机所有网络接口):

ssh -L 0.0.0.0:9208:<远程Elasticsearch地址>:9200 <SSH用户名>@<远程服务器地址>

2. 修改docker-compose.yml配置

通过extra_hosts将host.docker.internal映射到宿主机的网关IP,然后在容器内使用该地址访问端口:

version: '3'
services:
  curl_test:
    image: curlimages/curl
    extra_hosts:
      - "host.docker.internal:host-gateway"
    command: "curl http://host.docker.internal:9208"

替代方案:直接使用宿主机内网IP

如果你知道宿主机的内网IP(例如192.168.1.100),也可以直接在命令中指定该IP,无需配置extra_hosts:

version: '3'
services:
  curl_test:
    image: curlimages/curl
    command: "curl http://192.168.1.100:9208"

为什么之前的方法无效?

  • host.docker.internal:host-gateway方案:之前隧道仅绑定127.0.0.1,容器通过host.docker.internal访问的是宿主机内网IP,但该IP上的9208端口未被监听,导致连接拒绝。
  • 直接映射9208端口到容器:端口映射是将容器端口暴露给宿主机,而非让容器访问宿主机的端口,因此容器内的localhost仍指向自身,无法访问宿主机的隧道端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:01:05