在 Docker 中尝试 运行 节点红色时端口不可用

Ports are not available when attempting to run Node Red in Docker

当我尝试使用以下命令 运行 Node Red 的 Docker 容器时:

docker run  -p 1880:1880 --name mynodered nodered/node-red

我收到以下错误:

c:\program files\docker\docker\resources\bin\docker.exe: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:1880: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

我已经尝试使用 netstat 查找任何占用端口的内容,但我一无所获。我也尝试在 Windows 防火墙中打开端口,但仍然出错。

有没有其他方法 运行 Windows Docker 上的 Node Red 端口 1880?

经过大量搜索,我找到了这个问题的答案。该端口已被 Hyper-V 保留,因此您需要将其删除,将端口添加到排除列表,然后重新添加 Hyper-V。

我的解决方案基于这个答案:

这是 Windows 上的一个已知问题,有一些可用的解决方法。

您可以阻止 HNS 以使用此注册表项保留高端口:

reg add HKLM\SYSTEM\CurrentControlSet\Services\hns\State /v EnableExcludedPortRange /d 0 /f

然后重启。

更多详情,你可以查看这个github issue

您不需要 运行 在该特定端口上使用 node-red(如果已保留)。

尝试这样的事情:

docker run -dit -p 8880:1880 --name mynodered nodered/node-red

然后导航至:

http://localhost:8880