使用 ubuntu tusty,有一个服务在远程机器上运行,我可以通过 localhost:9999
的 ssh 隧道通过端口转发访问该服务。
我有一个 docker 容器正在运行。我需要从容器内通过主机的隧道访问该远程服务。
我尝试使用 -L 9000:host-ip:9999
从容器隧道连接到主机,然后从容器内通过 127.0.0.1:9000
访问服务无法连接。为了检查端口映射是否打开,我尝试了
nc -luv -p 9999 # at host
nc -luv -p 9000 # at container
在 此之后,段落。 2 但没有感知到通信,即使在容器上执行
nc -luv host-ip -p 9000
我还尝试通过 docker run -p 9999:9000
映射端口,但这报告绑定失败,因为主机端口已在使用中(可能是从主机隧道到远程机器)。
所以我的问题是
1 - 我将如何实现连接?我是否需要设置一个到主机的 ssh 隧道,或者这可以通过 docker 端口映射来实现吗?
2 - 测试连接是否正常的快速方法是什么?最好通过 bash。
谢谢。
原文由 npit 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为您可以通过在您的 docker run 中添加
--net=host
来做到这一点。但也请参阅这个问题: Forward host port to docker container