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

时间:2014-01-08 20:38:19

标签: iptables docker

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

我的初步解决方案是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

仍然无法正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

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

如果您按照http://docs.docker.io/en/latest/use/working_with_links_names/的说明运行链接到database的应用,我会假设应用容器在3306上有数据库端口?

如果有效,你就不需要iptables。