Estoy tratando de iniciar un contenedor docker con el siguiente comando.
docker run -it -p 50070:50070 -p 8088:8088 -p 8080:8080 suhothayan/hadoop-spark-pig-hive:2.9.2 bashTerminó con el siguiente error.
docker: respuesta de error del daemon: los puertos no están disponibles: listen tcp 0.0.0.0/50070: bind: se intentó acceder a un socket de una manera prohibida por sus permisos de acceso.
Según tengo entendido, el error se ha producido porque el puerto 50070 es utilizado por otro proceso. Intenté identificar el proceso para eliminarlo con el siguiente comando en el símbolo del sistema, pero no da un resultado ni un error.
netstat -ano | findstr :50080Según el problema de Docker para Windows https://github.com/docker/for-win/issues/3171 :
Es posible que tenga ese puerto en cualquiera de los rangos de puertos excluidos del comando netsh interface ipv4 show excludedportrange protocol=tcp
Puede usar la solución mencionada en el ticket anterior.
Deshabilite Hyper-V (que requerirá un par de reinicios)
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
Después de finalizar todos los reinicios necesarios, reserve el puerto que desea para que Hyper-V no lo reserve de nuevo.
netsh int ipv4 add excludedportrange protocol=tcp startport=50070 numberofports=1
Vuelva a habilitar Hyper-V (que requerirá un par de reinicios)
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
Hice esto para detener los procesos tcp =>
De esta manera, se termina la operación de puerto ocupado.
Esto funcionó para mí.
En mi máquina local tuve un problema similar con Docker Desktop y la integración habilitada con Debian/Ubuntu configurado como distribución predeterminada (WSL2 como estándar para todos). Cómo resolví:
Enfrenté esta situación cuando mi conexión VPN está activa.
puede desconectar temporalmente su conexión VPN, luego inicie su docker container y regrese y conéctese a su VPN nuevamente