从Docker容器中访问本地主机

jmp7cifd  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(256)

我知道有一吨类似的问题,但没有一个是为我工作!
我在Ubuntu 22.04.1 LTS上运行docker。我想做的就是通过SSH-Tunnel访问一个Map到端口localhost:9208上的Elasticsearch-Instance,而不需要将docker容器网络模式切换到host
下面是我的最小docker-compose.yml示例:

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

输出量:

curl: (7) Failed to connect to localhost port 9208 after 0 ms: Connection refused

我试探着:

  • 使用"host.docker.internal:host-gateway"的解决方法
  • 指定extra_hosts
  • 将端口9208直接Map到容器中

我知道这个最小的例子不起作用。但是所有提出的修正/改变都不起作用。所以我很高兴对这个问题有任何建议。

h43kikqp

h43kikqp1#

终于修好了!
该解决方案包含两个部分:

1.使主机localhost可供Docker容器访问

它所需要的只是

extra_hosts:
  - "host.docker.internal:host-gateway"

2.更重要的是:SSH隧道本身不是普通的本地主机!

这个post中的@felix-k的回答让我意识到我必须将远程端口Map到dockers docker 0接口,它所需要的只是一个额外的隧道:
ssh -N -L 172.17.0.1:9214:localhost:9200 user@remotehost

相关问题