Ошибка при запуске 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, чтобы показать, успешно ли соединение в браузере.

enter image description here

Ответ 3

Проблема в том, что общие порты, такие как 80, 443, 22,.. (в общем случае порты < 1024) защищены системой, поэтому вам нужны привилегии для их использования, здесь этого достаточно, чтобы быть системным администратором и выполнять команду как администратор.

Если это не обязательно :80 попробуйте использовать другой порт, например :8080, если это не помогает, и ошибка не изменяется, проблема идет глубже.

Ответ 4

В MacOS Mojave версии 10.14.2 эта команда работала для меня:

sudo apachectl stop

Перед выполнением этой команды запустите

sudo lsof -i -P | grep "LISTEN"

и проверьте, является ли httpd идентификатором слушателя на :80 например:

the second line is httpd listener on port :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)

Ответ 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