在Mac上运行docker化的locatunnel是否可行?

问题描述 投票:0回答:1

作为非常著名的 ngrok 的替代方案,我曾经使用

efrecon/localtunnel
docker 镜像在互联网上公开我的 http 服务器以进行测试。

对于 Linux,我曾经:

  • 启动我的本地 HTTP 服务器(假设在端口 8080 上)
  • 使用
    efrecon/localtunnel
    启动运行
    --network host
    图像的容器:
    docker run -it -d --name localtunnel --network host efrecon/localtunnel --port 8080
    
  • 获取提供的 URL:
    export LOCAL_TUNNEL_URL=$(docker logs localtunnel | cut -d ' ' -f 4)
    
  • 瞧:
    curl $LOCAL_TUNNEL_URL/hello
    

当然,对于 MacO,不可能使用

--network=host
标志,但我没有找到执行相同操作的正确方法。 我尝试了多种组合,例如:

docker run -it -d --name localtunnel -p 8443:8080 efrecon/localtunnel --port 8080
curl $LOCAL_TUNNEL_URL:8443/hello

docker run -it -d --name localtunnel -p 443:8080 efrecon/localtunnel --port 8080
curl $LOCAL_TUNNEL_URL/hello

docker run -it -d --name localtunnel -p 80:8080 efrecon/localtunnel --port 8080
curl $LOCAL_TUNNEL_URL/hello

docker run -it -d --name localtunnel -p 9090:8080 efrecon/localtunnel --port 8080
curl $LOCAL_TUNNEL_URL:9090/hello

但他们都没有给我结果,只有一个悬而未决的请求无限期地等待实现。 有关如何配置本地隧道远程端口转发的直接经验吗?

linux macos networking ssh
1个回答
0
投票

有趣的问题,我认为文档中未指定某些内容,这就是您遇到此问题的原因。

我认为这是不可行的,因为Localtunnel的docker版本,实现反向端口转发,需要将呼叫重定向到的进程位于同一主机上,所以

localhost:8080
。问题有两个:您无法通过
-p 8080:8080
,因为本地计算机上的端口 8080 已被本地服务器进程占用,除此之外,即使这是可能的,远程主机也会将调用转发到容器在端口 8080 上,您的进程应该可以在容器的 localhost:8080 上访问,但事实并非如此,因为服务器进程位于容器外部。 Linux 的优点是 Docker 可以共享主机网络,这不仅意味着每个容器都可以通过 localhost 访问,而且相反,这意味着每个容器也可以访问 localhost 上的任何其他容器或本地进程。

© www.soinside.com 2019 - 2024. All rights reserved.