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

时间:2017-01-18 08:37:04

标签: docker dockerfile

当我在localhost中运行NodeJS TcpProxy(下面的那个)时,它可以工作(我的意思是,当通过浏览器访问localhost时,它是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

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

考虑:

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

1 个答案:

答案 0 :(得分:1)

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

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