启动用户空间代理时出错:绑定到0.0.0.0:2181时出现意外错误Permission denied。

4

刚刚安装了 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:\Proyectos\kafka>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

有没有关于如何解决这个问题的想法?


在待机模式下几分钟后,Docker中相同的命令已经可以工作了。不确定为什么有时会失败。这个问题已经在https://github.com/docker/for-win/issues/1038上注册了。 - Junior Mayhé
1个回答

6

在使用2181端口的Zookeeper数月后,我遇到了同样的问题。我无法弄清楚为什么它不会绑定到2181端口,因为我以管理员身份运行了netstat -aon | findstr '2181'命令,但没有结果。最终,我得出结论,即该端口实际上被某个进程使用,尽管它未列出。我找到的解决方案是仍然使用2181端口(这对我的应用程序至关重要):

在安全模式下启动Windows

在powershell/cmd中运行命令netsh int ipv4 add excludedportrange protocol=tcp startport=2181 numberofports=1。这将保留端口2181,因此当您重新启动正常的Windows模式时,没有应用程序会在您使用端口之前窃取该端口。

进入常规的Windows并启动Zookeeper。这样就不会有绑定问题了!


2
感谢@cmpickle!在尝试了重启docker、重置docker、重启电脑、根据此评论https://github.com/docker/for-win/issues/1038#issuecomment-458440399禁用快速启动、重新安装docker之后,我几乎要放弃了。运行netsh命令解决了问题! - joebarbere
1
如果您不介意更改端口,只需将端口连接到其他外部端口“-p 28017:2181”,那也可以解决这个问题 :) - jonaslagoni
@Lagoni 是的,你绝对可以这样做。对于我的特定情况来说,我的团队都在使用同一个端口,并且该端口在多个安装脚本中定义,因此我不能让整个团队更改端口,仅仅是因为它在我的电脑上无法正常工作。 :) - cmpickle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接