【发布时间】:2021-08-02 19:33:13
【问题描述】:
我在尝试使用 docker 和两个端口转发时遇到问题。基本上我有:
- 一个 docker 容器,托管一个 MySQL 数据库,在容器中的 3306 端口上运行
- 容器的宿主机,其中端口XXXX通过docker-compose命令
ports: - XXXX:3306链接到容器的3306;我可以使用 PhpMyadmin 在主机中访问我的容器。所以,到目前为止一切顺利 - 我在端口 3336 上创建了一个带有代理服务器的网桥,使用以下命令创建:
ssh -i key.pem -R 3336:localhost:XXXX ubuntu@IP - 然后我有一个客户端(比如 Mysql Workbench),它使用另一个隧道连接到代理:
ssh -i key.pem -L 3306:3336 ubuntu@IP
我试图总结下图中的所有内容,其中 XXXX 为 3306(绿色框)。
当我尝试使用这种相当复杂的方法连接到数据库时,它在 XXXX=3306 时成功。但是,例如,当 XXXX=8701 时,它就不再起作用了。你知道为什么吗?我得到的错误是经典超时:UnhandledPromiseRejectionWarning: Error: connect ETIMEDOUT
提前感谢您的帮助。 最好的, 乙
【问题讨论】:
-
这个问题与编程无关,因此在 SO 上是题外话。 SO 的 Serverfault 姊妹站点为此类服务器和网络基础设施相关问题提供支持。
标签: mysql docker portforwarding ssh-tunnel