Я пытаюсь запустить контейнер докеров с помощью приведенной ниже команды.
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: bind: была предпринята попытка доступа к сокету способом, запрещенным его правами доступа.
Насколько я понимаю, ошибка возникла из-за того, что порт 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
Мне помогло это решение (запускайте терминал от имени администратора):
net stop winnat
docker start container_name
net start winnat
Это не объясняет, почему что-то терпит неудачу.
Спасибо, это помогло мне. Я столкнулся с той же ошибкой, я запустил первую команду (net stop winnat) в режиме администратора Windows PowerShell, затем я запустил (docker-compose up --build -d) и в конце запустил последнюю команду (net start Виннат).
На моем локальном компьютере была аналогичная проблема с Docker Desktop, и включена интеграция с Debian / Ubuntu, установленным в качестве дистрибутива по умолчанию (WSL2 является стандартным для всех). Как я решил:
Я сделал это, чтобы остановить процессы tcp =>
Таким образом, работа занятого порта завершается.
Это сработало для меня.
Я столкнулся с этой ситуацией, когда мое VPN-соединение активно.
вы можете временно отключить VPN-подключение, после этого запустить docker container, вернуться и снова подключиться к VPN
Перезапуск winnat не лучшая идея. Основная причина в том, что некоторые порты Windows динамически зарезервированы, даже если они не заняты. Эту команду можно использовать для решения.
netsh int ipv4 set dynamic tcp start=49152 num=16384
netsh int ipv6 set dynamic tcp start=49152 num=16384
Эта статья подробно объясняет это, и я рекомендую взглянуть на это:
Полностью решить проблему запуска docker-контейнеров на Windows 10 из-за привязки портов
Ссылка действительно помогла объяснить и кажется наиболее подходящим способом решения проблемы. Отключение Hyper-V кажется излишним и дополнительным перезапуском.
Попробуйте перезапустить "Host Network Service"
Это часто вызвано драйвером Windows NAT (winnat), остановка и перезапуск этой службы могут решить проблему.
откройте оболочку от имени администратора и введите эти команды:
Этот ответ уже был предоставлен Cepr0 в прошлом году.
***net stop winnat
docker start container_name
net start winnat***
Написание этого в cmd сработало для меня, большое спасибо комментаторам за решение.
net stop winnatdocker start <container_name>net start winnatМне пришлось отключить Windows IIS:
Кроме того, мне пришлось включить Hyper-V вместе с Virtual Machine Platform и Windows Hypervisor Platform:
Отвечает ли это на ваш вопрос? Была предпринята попытка доступа к сокету способом, запрещенным его правами доступа