如何公开docker容器中运行的绑定到localhost的服务

如何公开docker容器中运行的绑定到localhost的服务,docker,docker-networking,Docker,Docker Networking,我有一个在docker容器中运行的服务,默认情况下,它只绑定到localhost 我可以重新配置/重新编程此服务以绑定到所有接口,但这可能会在其他上下文中产生安全影响。有没有办法在docker容器中公开绑定到localhost的服务 我最终在docker容器中使用socat,将公共接口上的相关端口号上的任何tcp连接代理到私有接口 例如,可以将其添加到docker容器运行脚本中,以将localhost:3000上绑定的服务代理到:3000,在那里它可以像任何其他服务一样公开和链接。确保在容器内安

我有一个在docker容器中运行的服务,默认情况下,它只绑定到localhost


我可以重新配置/重新编程此服务以绑定到所有接口,但这可能会在其他上下文中产生安全影响。有没有办法在docker容器中公开绑定到localhost的服务

我最终在docker容器中使用socat,将公共接口上的相关端口号上的任何tcp连接代理到私有接口

例如,可以将其添加到docker容器运行脚本中,以将localhost:3000上绑定的服务代理到:3000,在那里它可以像任何其他服务一样公开和链接。确保在容器内安装socat

socat TCP4-LISTEN:3000,bind=`hostname-I | tr-d'[:space:'`,fork TCP4:localhost:3000&


请注意;我正在使用
hostname-I | tr-d'[:space:]
来发现docker容器的ip。由于docker容器通常只有一个公共ip,因此这很好。

我打算建议使用
--cap add=NET_ADMIN
iptables
,但容器名称空间中的DNAT似乎存在一些问题