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

时间:2016-11-02 15:29:20

标签: docker docker-networking

我有一个在docker-container中运行的服务,默认情况下只绑定到localhost。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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

相关问题