端口不可用:侦听 tcp 0.0.0.0/50070:绑定:尝试以其访问权限禁止的方式访问套接字
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
我正在尝试使用以下命令启动 docker 容器。
docker run -it -p 50070:50070 -p 8088:8088 -p 8080:8080 suhothayan/hadoop-spark-pig-hive:2.9.2 bash
最后出现以下错误。
docker: error response from daemon: 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.
据我了解,错误是由于端口 50070 被另一个进程使用。我试图识别该进程,以便在命令提示符下使用以下命令将其终止,但它既不提供输出也不提供错误。
netstat -ano | findstr :50080
根据 Docker windows https://github.com/docker/for-win/issues/3171 的问题:
您可能在命令 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
This 解决方案帮助了我:
net stop winnat
docker start container_name
net start winnat
在我的本地计算机上,Docker 桌面和集成启用了类似的问题 Debian/Ubuntu 设置为默认发行版(WSL2 作为所有标准)。我是如何解决的:
- Docker 设置已禁用“登录时启动 Docker 桌面”
- 正在重启Windows
- 先发Debian/Ubuntu
- 然后启动Docker桌面
我这样做是为了停止 tcp 进程 =>
- net stop winnat
- 网络启动winnat
这样,繁忙的端口操作就结束了。
这对我有用。
我在 VPN 连接处于活动状态时遇到过这种情况。
您可以暂时断开您的 VPN 连接,然后启动您的 docker container
,然后返回并再次连接到您的 VPN
重启winnat不是个好办法,根本原因是windows的一些端口是动态保留的,即使不是occupied.This命令也可以解决[=12] =]
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
这篇文章解释的很详细,推荐看一看
Completely solve the problem of docker containers running on Windows 10 due to port binding
尝试重新启动“主机网络服务”
这通常是由 Windows NAT 驱动程序 (winnat) 引起的,停止并重新启动该服务可能会解决问题。
以管理员身份打开 shell,然后键入以下命令:
- net stop winnat.
- docker开始...
- 网络启动winnat
我正在尝试使用以下命令启动 docker 容器。
docker run -it -p 50070:50070 -p 8088:8088 -p 8080:8080 suhothayan/hadoop-spark-pig-hive:2.9.2 bash
最后出现以下错误。
docker: error response from daemon: 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.
据我了解,错误是由于端口 50070 被另一个进程使用。我试图识别该进程,以便在命令提示符下使用以下命令将其终止,但它既不提供输出也不提供错误。
netstat -ano | findstr :50080
根据 Docker windows https://github.com/docker/for-win/issues/3171 的问题:
您可能在命令 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
This 解决方案帮助了我:
net stop winnat
docker start container_name
net start winnat
在我的本地计算机上,Docker 桌面和集成启用了类似的问题 Debian/Ubuntu 设置为默认发行版(WSL2 作为所有标准)。我是如何解决的:
- Docker 设置已禁用“登录时启动 Docker 桌面”
- 正在重启Windows
- 先发Debian/Ubuntu
- 然后启动Docker桌面
我这样做是为了停止 tcp 进程 =>
- net stop winnat
- 网络启动winnat
这样,繁忙的端口操作就结束了。
这对我有用。
我在 VPN 连接处于活动状态时遇到过这种情况。
您可以暂时断开您的 VPN 连接,然后启动您的 docker container
,然后返回并再次连接到您的 VPN
重启winnat不是个好办法,根本原因是windows的一些端口是动态保留的,即使不是occupied.This命令也可以解决[=12] =]
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
这篇文章解释的很详细,推荐看一看
Completely solve the problem of docker containers running on Windows 10 due to port binding
尝试重新启动“主机网络服务”
这通常是由 Windows NAT 驱动程序 (winnat) 引起的,停止并重新启动该服务可能会解决问题。
以管理员身份打开 shell,然后键入以下命令:
- net stop winnat.
- docker开始...
- 网络启动winnat