端口不可用: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