Ошибка при запуске пользовательского прокси: привязка для 0.0.0.0: 2181: отказано в разрешении на непредвиденную ошибку

#docker #windows-10 #apache-zookeeper

#docker #windows-10 #apache-zookeeper

Вопрос:

Только что установил Docker Desktop Community, но не может запустить zookeeper.

 C:kafka>docker run --rm -d --name zookeeper --network app-tier -p 2181:2181 -p 3888:3888 zookeeper:latest
Unable to find image 'zookeeper:latest' locally
latest: Pulling from library/zookeeper
8e402f1a9c57: Pull complete
4866c822999c: Pull complete
205f26e90552: Pull complete
99243f6904c1: Pull complete
c6ac2a949410: Pull complete
7c9e37572768: Pull complete
637f41838913: Pull complete
Digest: sha256:7eb73b4f16688bdd6c6594ea3aacbaf31dacc33f7a8ab0d52a4fdc08bc4f919a
Status: Downloaded newer image for zookeeper:latest
1d96e4605efcd0836b9121be75c381195547014bb9d42ea4716c8a1b60068903
docker: Error response from daemon: driver failed programming external connectivity on endpoint zookeeper (48149ba74f7230bef95a5c98ab968498d0f965bede97ada98115384906c06300): Error starting userland proxy: Bind for 0.0.0.0:2181: unexpected error Permission denied.
  

Версия Docker

  • Версия 2.0.0.3 (31259)
  • Канал стабилен
  • Сборка 8858db3
  • Движок 18.09.2

Версия для Windows

  • Версия Windows 10: Microsoft Windows [Версия 10.0.17763.348]

Сети

 C:Proyectoskafka>docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5ed898201a6d        app-tier            bridge              local
f0bd501b76fa        bridge              bridge              local
5c822b39b283        host                host                local
eb54047d3dc8        none                null                local
  

Есть мысли о том, как это исправить?

Комментарии:

1. После нескольких минут в режиме ожидания сработала та же команда в docker. Не уверен, почему иногда происходит сбой. Для этого зарегистрирована проблема в github.com/docker/for-win/issues/1038

Ответ №1:

Я столкнулся с этой же проблемой после использования Zookeeper на порту 2181 в течение нескольких месяцев. Я не мог понять, почему он не привязывается к порту 2181, поскольку я запускался netstat -aon | findstr '2181' от имени администратора и не получал никаких результатов. В конце концов я пришел к выводу, что порт фактически использовался каким-то процессом, даже если его не было в списке. Решение, которое я нашел, по-прежнему использует порт 2181 (это было критично для моего приложения):

Запустите Windows в безопасном режиме с подключением к сети

В powershell / cmd запустите команду netsh int ipv4 add excludedportrange protocol=tcp startport=2181 numberofports=1 Это зарезервирует порт 2181, поэтому при загрузке обратно в обычный режим Windows ни одно приложение не украдет порт, прежде чем вы сможете его использовать.

Загрузитесь в обычную Windows и запустите Zookeeper. При этом проблем с привязкой не будет!

Комментарии:

1. Спасибо @cmpickle! После всех этих попыток: перезапуск docker, сброс настроек docker, перезагрузка моего компьютера, отключение быстрой загрузки на основе этого комментария github.com/docker/for-win/issues/1038#issuecomment-458440399 , переустановка docker. Я почти собирался сдаться. Запуск команды netsh сделал свое дело!

2. Если вы не возражаете против смены порта, просто подключите порт к чему-то другому внешнему «-p 28017: 2181», это также должно сработать 🙂

3. @Lagoni да, вы определенно можете это сделать. Для моего конкретного сценария вся моя команда использует один и тот же порт, и порт определен в нескольких сценариях установки, и поэтому я не смог заставить всю мою команду сменить порты только потому, что это не работало на моей машине. 🙂