最初成功进入Docker的套接字连接失败

时间:2017-02-02 11:54:00

标签: node.js sockets docker

在MacOS下运行我从node.js应用程序与net.Socket()连接到运行在同一主机上的Docker容器,该主机包含Centos下的C ++套接字服务器。 Docker运行命令是:

docker run -it --rm -p 14000-14010:14000-14010 -v /Users/me/Development/spdz:/spdz spdz/spdzdev

当docker中的c ++服务器正在运行时,我看到节点中的连接成功,3ms之后是一个套接字关闭消息。

看起来容器前面的代理正在接受请求,将其传递给Docker,在那里它被拒绝。然而,这导致我的前端应用程序中的错误消息认为连接成功,但后来发现它不是。

我希望看到一个简单的连接被拒绝。关于如何纠正或更好地理解这一点的任何建议都会有所帮助。

我确信这种行为是由Docker引入的,因为在Docker之外运行组件会在连接时产生预期的即时失败。此外,我已尝试将导出的端口映射到外部网络接口而不是localhost,但看到相同的行为。

1 个答案:

答案 0 :(得分:0)

我建议您检查错误是否来自您的服务器应用程序。

您可以使用netcat命令行在Docker容器上打开套接字 nc -l 14000 这将创建一个侦听端口14000的TCP服务器套接字。

然后,从您的主机(MacOs),打开终端并尝试连接telnet telnet -e q localhost 14000