在Docker中运行的TcpProxy无法正常工作

当我在我的本地主机上运行一个NodeJS TcpProxy(下面的那个),它的工作原理(我的意思是,当通过浏览器访问本地主机时,它是console.logs“嗨”)。 但是,当我启动一个包含相同程序的容器时,它不起作用。

TcpProxy代码(index.js):

var net = require('net'); var server = net.createServer(function (socket) { console.log("Hi"); }).listen(80, '127.0.0.1'); console.log("TCP server accepting connections on port: 80"); 

Dockerfile:

 FROM fedora-nodeJS # Just a custom image with fedora and nodeJS ADD index.js / EXPOSE 80 CMD node index 

然后我只是创build图像(“docker build -t proxy”)和(“docker run -p 80:80 -P proxy”)。

注意事项:

  • 我试着重复改变端口号的过程,没有任何改变。
  • 它console.logs TCP服务器接受端口上的连接:80,但是当我进入本地主机时没有任何反应。
  • 当运行“docker ps -a”命令时,它显示容器正在运行,并且localhost端口80映射到容器端口80(TCP)

你的脚本监听127.0.0.1,这是你的本地环回设备。 在这种情况下,它是你的容器的回环设备,而不是你的本地主机。 我假设expose-p发布您的容器的IP地址的端口到您的主机。 不是它的回环设备。

所以你需要听你的外部IP地址。 尝试聆听0.0.0.0