我有两个不同图像的泊坞容器 . 这是“docker ps”命令的部分输出:
$user: docker ps
CONTAINER ID IMAGE PORTS
9c8ff81215d4 node:slim 0.0.0.0:5858->5858/tcp, 0.0.0.0:10101->10101/tcp
d85a0de91432 node-debug 0.0.0.0:8080->8080/tcp
The first container 正在运行带有调试选项的服务器应用程序:
$user: node --debug server.js
Debugger listening on port 5858
...
并使用调试器侦听端口5858,使用server.js应用程序侦听端口10101 .
The second container 正在运行node-inspector
$user: node-inspector
Node Inspector v0.12.6
Visit http://127.0.0.1:8080/?port=5858
默认情况下,在端口5858上连接到调试器,并在端口8080上侦听Chrome中的web-inspector .
The issue 是我访问http://127.0.0.1:8080/?port=5858时我看到检查员没有加载来源 .
在Chrome控制台中看到此错误:
Request with id = 10 failed. "ErrorNotConnected: Error: connect ECONNREFUSED 127.0.0.1:5858. Is node running with --debug port 5858?"
1 回答
这里的问题是节点检查器正在尝试连接到localhost / 127.0.0.1,即本地容器,而不是主机的本地容器 . 在桥接网络(默认)中运行时,每个容器都在其自己的IP上 .
您可以使用以下任一选项快速解决此问题:
为两个容器使用主机网络
在这种情况下,不再需要您配置的端口转发
仅为节点检查器容器使用主机网络
在这种情况下,您仍需要将端口5858映射到主机,但不再需要节点检查器上的端口8080