iptables将远程端口转发到本地端口进行本地访问

我在Docker容器中的应用程序中有一个应用程序。 我有另一个Docker容器中的数据库。 数据库容器有一个暴露的端口49155.应用程序要求数据库暴露在3306端口,我不能改变,由于IonCube混淆。 所以,我可以将我的应用程序指向数据库容器,但应用程序无法find数据库(错误的端口)。

我最初的解决scheme是我们IPTables转发本地请求端口3306到远程容器端口49155使用:

iptables -t nat -A PREROUTING -p tcp --src 127.0.0.1 --dport 3306 -j REDIRECT --destination 192.168.200.212 --to-ports 49155 

还是行不通。 有什么想法吗?

如果使用docker run -name database -p 127.0.0.1:3306:49155 <DB_image> <cmd>将数据库的端口展示给主机上的3306,如http://docs.docker.io/en/latest中所述/ use / port_redirection /#port-redirection 。

如果你然后运行你的应用程序链接到database解释http://docs.docker.io/en/latest/use/working_with_links_names/我会假设应用程序容器有3306上的DB端口&#xFF1F;

如果可行的话,你不需要iptables。