Ошибка при запуске userland proxy: Привязка для 0.0.0.0:80: непредвиденная ошибка Разрешение отклонено
Я запускаю последнюю версию Docker CE, 17.09, под Windows 10 Pro, и используя два разных примера, я получаю отказ от прав.
Пример сайта Docker: docker run -d -p 80:80 --name webserver nginx
Пример сайта AWS Пример docker run -p 80:80 hello-world
: docker run -p 80:80 hello-world
оба возвратили ту же ошибку.
docker: Ответ на ошибку от демона: драйвер не выполнил программирование внешнего подключения на конечной точке XXXXX: Ошибка запуска прокси-сервера userland: Привязка для 0.0.0.0:80: непредвиденная ошибка Разрешение отклонено.
Ответы
Ответ 1
Я решил проблему на Windows 10 Pro, оказалось, что у меня была служба веб-публикации World Wide Web. Потребовал мне некоторое время, чтобы найти это, отметив через netstat -a -n
что у меня было: 80 слушатель где-то/каким-то образом. Дурак я. Завершить его, и я был в порядке с портом 80.
Ответ 2
Измените порт, используя следующие команды:
docker container ls //show the container infos, note the ports info.
docker stop webserver
docker rm webserver //shut down currently webserver
docker run -d -p 8080:80 --name webserver nginx (or 8000:80)
Наконец, позвольте ввести localhost: 8080, чтобы показать, успешно ли соединение в браузере.
Ответ 3
Проблема в том, что общие порты, такие как 80
, 443
, 22
,.. (в общем случае порты < 1024
) защищены системой, поэтому вам нужны привилегии для их использования, здесь этого достаточно, чтобы быть системным администратором и выполнять команду как администратор.
Если это не обязательно :80
попробуйте использовать другой порт, например :8080
, если это не помогает, и ошибка не изменяется, проблема идет глубже.
Ответ 4
В MacOS Mojave версии 10.14.2 эта команда работала для меня:
sudo apachectl stop
Перед выполнением этой команды запустите
sudo lsof -i -P | grep "LISTEN"
и проверьте, является ли httpd
идентификатором слушателя на :80
например:
Если это так, то это на самом деле Mac Apache, который вызывает проблему.
Ответ 5
Первое, что вы должны предпринять, это запустить команду:
netstat -aon | findstr [port#]
Это скажет вам, если процесс запущен на данном порту. Если это так, то вы можете завершить процесс с помощью команды:
taskkill/PID [PID]/F
Это убьет процесс, использующий этот порт. После этого вы сможете привязать новый процесс к порту.
Я также сталкивался с тем netstat -aon
когда netstat -aon
не возвращал информацию о том, что процесс запускался для порта, который я хотел использовать, но, безусловно, имел запущенный процесс, который не позволял мне запускать новый процесс на порт. Я смог решить проблему с помощью следующего:
Запустите Windows в безопасном режиме с помощью сети
В powershell/cmd запустите команду:
netsh int ipv4 add excludedportrange protocol=tcp startport=[PORT] numberofports=1
Это зарезервирует порт, поэтому при загрузке в обычном режиме Windows ни одно приложение не сможет украсть порт, прежде чем вы сможете его использовать.
Ответ 6
Причина, по которой я получил эту ошибку, состояла в том, что порт уже использовался. Изменен на другой порт, и я больше не получил эту ошибку.
Ответ 7
Порт используется VisualStudio без отладки. Закрыть VS, затем снова открыть.
Ответ 8
Недавно я столкнулся с этой проблемой, пытаясь загрузить докеревую среду для поддержки старого проекта. В моем случае экземпляр Apache по умолчанию был запущен на моем Mac после недавнего обновления ОС и должен был быть отключен до того, как был доступен порт 80. Вы можете отключить эту команду:
sudo/usr/sbin/apachectl stop
Если у вас все еще есть проблемы, вы можете использовать следующую команду для просмотра PID того, что работает на данном порту (в этом случае 80):
lsof -t -i :80
Вы можете попытаться отключить все, что работает на этих портах, с помощью команды kill; просто убедитесь, что вы не собираетесь убивать что-либо важное!
kill $(lsof -t -i :80)
Ответ 9
Это помогло мне. Порт, упомянутый в сообщении об ошибке, действительно находился в одном из диапазонов зарезервированных портов: Windows не может подключиться к порту выше 49690
Ответ 10
В Windows 10 Pro, выполняющей команду Docker из окна CMD с правами администратора, у меня все еще есть проблемы (согласно @mikael-chudinov выше). Я действительно хочу использовать порт 80, поэтому другие ответы мне не подходят.
Пожалуйста, смотрите это сообщение в блоге Jens на www.jens79.de
Из powershell запустите команду:
Get-NetTCPConnection -LocalPort 80 | Format-List
Это для меня обнаружился один процесс с pid = 4
В системном мониторе это "системный" процесс, но согласно статье, приведенной выше, на самом деле IIS работает как "служба публикации в Интернете".
Предполагая, что вам не нужен IIS, в консоли служб Windows остановите и отключите "Службу публикации в Интернете", а затем повторите попытку.
Ответ 11
Я сталкивался с этим на Windows 10. Ответ на этот вопрос мне помог: порт 80 используется SYSTEM (PID 4), что это? Мне удалось использовать NET STOP HTTP для остановки прослушивания служб на порту 80.
Ответ 12
У меня тоже есть такая же проблема. Если прокси-сервер уже установлен в вашей системе, тогда порт контейнера окружен прокси-сервером, и вам необходимо использовать прокси для запуска контейнера один раз, и вам не нужно будет делать это в следующий раз.
Ответ 13
Проблема в том, что у вас нет разрешения на запуск образа в порту 80. Для этого добавьте root --user в команду запуска docker. Это предоставит привилегии root и будет запущено.
Ответ 14
Я снова и снова вижу ту же проблему на моем локальном компьютере: Ошибка ответа от демона: драйвер не смог запрограммировать внешнее соединение на конечной точке mahesh (de6e132743cdc24ab8ce542c868018cd68d039a004538d2e6f03b84b42a5501b): Ошибка запуска прокси-сервера пользователя: ошибка привязки 0.0.0.0:80: ошибка при привязке 0.0.0.0:80:
Что бы я ни печатал,
Ответ 15
Если бы у меня возникла та же проблема, мой контейнер просто не запустился и вывел сообщение об ошибке при попытке запустить контейнер:
Ошибка от демона: драйвер не смог запрограммировать внешнее соединение на конечной точке..... Ошибка запуска прокси-сервера пользователя: привязка для 0.0.0.0:1521: непредвиденная ошибка Отказано в разрешении.
с помощью следующей команды для запуска контейнера Oracle:
запуск докера -d -p 1521:1521...
Для меня я думаю, что это результат неустановленного экземпляра Oracle, который не был должным образом удален. Порт еще используется или что-то. Но просто переход на другой порт устранил проблему, как показано ниже:
Докер запускает -d -p 1523: 1521...
Ответ 16
Проверьте, запущен ли nginx на хост-компьютере, и остановите его.
sudo service nginx stop