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

Posted

技术标签:

【中文标题】端口不可用:listen tcp 0.0.0.0/50070:bind:试图以访问权限禁止的方式访问套接字【英文标题】:Ports are not available: listen tcp 0.0.0.0/50070: bind: An attempt was made to access a socket in a way forbidden by its access permissions 【发布时间】:2021-03-24 03:11:44 【问题描述】:

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

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

最终出现以下错误。

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

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

netstat -ano | findstr :50080

【问题讨论】:

这能回答你的问题吗? An attempt was made to access a socket in a way forbidden by its access permissions 【参考方案1】:

This 解决方案帮助了我:

net stop winnat
docker start container_name
net start winnat

【讨论】:

将 ... 替换为您的 docker 容器的名称。 这并不能解释 为什么 事情会失败。 谢谢它帮助了我。我遇到了同样的错误,我在windows powershell的管理员模式下运行了第一个命令(net stop winnat),然后我运行了(docker-compose up --build -d),最后我运行了最后一个命令(net start温纳特)。 为我工作,谢谢。【参考方案2】:

我这样做是为了停止 tcp 进程 =>

net stop winnat net start winnat

这样,繁忙的端口操作就终止了。

这对我有用。

【讨论】:

【参考方案3】:

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

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

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

    禁用 hyper-v(需要重启几次)

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

    完成所有必需的重新启动后,保留您想要的端口,这样 hyper-v 就不会保留它

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

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

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

【讨论】:

【参考方案4】:

在我的本地机器上,Docker Desktop 和集成启用了类似的问题,并将 Debian/Ubuntu 设置为默认发行版(WSL2 作为所有标准)。我是如何解决的:

Docker 设置禁用“登录时启动 Docker 桌面” 重新启动 Windows 首次启动 Debian/Ubuntu 然后启动 Docker 桌面

【讨论】:

【参考方案5】:

当我的 *** 连接处于活动状态时,我遇到了这种情况。 您可以暂时断开您的 *** 连接,然后启动您的docker container,然后返回并再次连接到您的 ***

【讨论】:

以上是关于端口不可用:listen tcp 0.0.0.0/50070:bind:试图以访问权限禁止的方式访问套接字的主要内容,如果未能解决你的问题,请参考以下文章

Error starting userland proxy: listen tcp4 0.0.0.0:8005: bind: address alrea

5672端口引发的一个大坑

Linux下如何查看80端口是不是被占用

Listen 0.0.0.0:80 Listen [::0]:80

解决端口占用问题

adb.exe无法启动