#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 да, вы определенно можете это сделать. Для моего конкретного сценария вся моя команда использует один и тот же порт, и порт определен в нескольких сценариях установки, и поэтому я не смог заставить всю мою команду сменить порты только потому, что это не работало на моей машине. 🙂