我知道有一吨类似的问题,但没有一个是为我工作!
我在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到容器中
我知道这个最小的例子不起作用。但是所有提出的修正/改变都不起作用。所以我很高兴对这个问题有任何建议。
1条答案
按热度按时间h43kikqp1#
终于修好了!
该解决方案包含两个部分:
1.使主机localhost可供Docker容器访问
它所需要的只是
2.更重要的是:SSH隧道本身不是普通的本地主机!
这个post中的@felix-k的回答让我意识到我必须将远程端口Map到dockers docker 0接口,它所需要的只是一个额外的隧道:
ssh -N -L 172.17.0.1:9214:localhost:9200 user@remotehost