【问题标题】:Port binding error when connecting to localhost Kafka broker from localhost Consumer in Docker container从 Docker 容器中的 localhost Consumer 连接到 localhost Kafka 代理时出现端口绑定错误
【发布时间】:2019-05-11 13:13:15
【问题描述】:

我有一个 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 服务器在不绑定的情况下监听该新端口?

【问题讨论】:

    标签: docker networking apache-kafka


    【解决方案1】:

    所以经过一番挖掘后,我找到了一些选择。 (注意:我使用的是 Mac,所以 #2 可能不适用于所有人)。

    1. docker run 命令中包含--network=host(如here 所示)。
    2. 根本不要更改docker run 命令,而是连接到容器消费者/发布者代码内host.docker.internal:9092 的代理。如here所见。

    我无法让#1 为我解决问题(我确定这是用户错误)。但是 #2 运行良好,只需要在容器内进行配置更改。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2021-03-15
    相关资源
    最近更新 更多