从Docker容器中的localhost使用者连接到localhost Kafka代理时出现端口绑定错误

时间:2018-12-10 15:43:40

标签: docker networking apache-kafka

我有一个Zookeeper运行在端口2181(默认)上,而一个Kafka服务器则在本地计算机的9090端口上监听。

当我在本地运行kafka CLI或在本地运行消费者/生产者应用程序时,连接没有问题。

然后我尝试将Kafka使用者绑定到Docker容器中,并在本地运行该Docker容器,例如: docker run -p 9092:9092 --rm <DOCKER_IMAGE>

这给出了错误: (Error starting userland proxy: Bind for 0.0.0.0:9090 failed: port is already allocated.)

这是有道理的,因为Kafka Server已绑定到9092,如nmap -p 9092 localhost所示: PORT STATE SERVICE 9092/tcp open XmlIpcRegSvc

通过-p XXX:9090将Docker容器映射到其他端口没有问题,但是如何使本地Kafka服务器在不绑定新端口的情况下侦听该新端口?

1 个答案:

答案 0 :(得分:0)

因此,经过一些挖掘,我发现了一些选择。 (注意:我在Mac上,因此#2可能并不适用于所有人)。

  1. --network=host命令中包含docker run(如here所示)。
  2. 完全不要更改docker run命令,而应在容器使用者/发布者代码内的host.docker.internal:9092处连接到代理。如here所示。

我无法获得第一名的帮助(我确定这是用户错误)。但是,#2可以完美运行,只需要在容器内部进行配置更改即可。