端口不可用:listen tcp 0.0.0.0/50070:bind:试图以访问权限禁止的方式访问套接字

新手上路,请多包涵

我正在尝试使用以下命令启动一个 docker 容器。

 docker run -it -p 50070:50070 -p 8088:8088 -p 8080:8080 suhothayan/hadoop-spark-pig-hive:2.9.2 bash

它最终出现以下错误。

docker:来自守护进程的错误响应:端口不可用:监听 tcp 0.0.0.0/50070:绑定:尝试以访问权限禁止的方式访问套接字。

据我了解,由于另一个进程使用了端口 50070,因此发生了错误。我试图识别该进程,以便在命令提示符下使用以下命令终止该进程,但它没有给出输出或错误。

 netstat -ano | findstr :50080

原文由 lse23 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

根据 Windows 的 Docker 问题 https://github.com/docker/for-win/issues/3171

您可能在命令 netsh interface ipv4 show excludedportrange protocol=tcp 的任何排除端口范围内都有该端口

您可以使用上述票证中提到的解决方案。

  1. 禁用 hyper-v(这将需要重新启动几次)

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

  1. 完成所有必需的重新启动后,保留您想要的端口,以便 hyper-v 不会保留它

netsh int ipv4 add excludedportrange protocol=tcp startport=50070 numberofports=1

  1. 重新启用 hyper-V(需要重启几次)

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

原文由 Sandeep 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个 解决方案帮助了我:

 net stop winnat
docker start container_name
net start winnat

原文由 Cepr0 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题