Привязка порта Docker не выполняется.Почему «отказано в разрешении»? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь запустить контейнер jenkinsci/blueocean под Windows 10 Pro (последняя версия). Я запускаю скрипт:

docker run ^
  --rm ^
  -u root ^
  -d ^
  -p 8080:8080 ^
  -p 50000:50000 ^
  -v D:/docker/jenkins/volumes/jenkins-data:/var/jenkins_home ^
  -v D:/docker/jenkins/volumes/docker.sock:/var/run/docker.sock ^
  -v D:/docker/jenkins/volumes/home:/home ^
  jenkinsci/blueocean

Это происходит со следующим сообщением:

docker: Error response from daemon: 
  driver failed programming external connectivity on endpoint elastic_kare: 
  Error starting userland proxy: 
    Bind for 0.0.0.0:50000: unexpected error Permission denied

Если я пропущу привязку порта 50000, он будет работать нормально, но мне нужен порт 50000 для связи с ведомыми устройствами на хосте.

Привязка 50000 к другому порту не помогает. Порт не используется, согласно netstat -an. Попытка запустить скрипт от имени администратора не помогла.

В чем здесь проблема?

обновление: я перезапустил свой ноутбук и также обновил Docker Desktop до последней версии.

update2: после перезагрузки ноутбука я также перезагружаю Docker (несколько раз). Безрезультатно.

update3: выключение брандмауэра Windows не решило проблему.

Ответы [ 2 ]

0 голосов
/ 30 июля 2019

Я столкнулся с той же проблемой, и после изменения порта для докера это было решено. Я использовал порт 50062, который был зарезервирован Hyper-V. я подтверждаю это, выполнив следующую команду.

интерфейс netsh ipv4 показывает исключенный протокол диапазона = tcp

Start Port    End Port

 36259       36259
 49675       49774
 49875       49974
 50000       50059
 50060       50159
 50160       50259
 50260       50359
 50360       50459
 50614       50713

Администрирование исключений портов.

после изменения порта я смог запустить контейнер.

0 голосов
/ 02 апреля 2019

Если вы используете Docker в Windows, то он будет использовать Hyper-V - я обнаружил, что Hyper-V резервирует несколько портов - вы можете узнать, запустив это:

netsh interface ipv4 show excludedportrange protocol=tcp

На моей машине было видно, что у нее зарезервирован порт 50000. Чтобы освободить этот порт, я отключил Hyper-V:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

После перезагрузки я зарезервировал порт 50000:

netsh int ipv4 add excludedportrange protocol=tcp startport=50000 numberofports=1

Затем снова включил Hyper-V:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

Когда он вернулся, я мог запустить Jenkins в Docker на Windows:

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...