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

uyto3xhc  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(578)

我有一个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服务器绑定到9092,如中所示 nmap -p 9092 localhost : PORT STATE SERVICE 9092/tcp open XmlIpcRegSvc 我可以通过将docker容器Map到另一个端口 -p XXX:9090 ,但是如何让本地kafka服务器在不绑定到新端口的情况下侦听该端口?

kyvafyod

kyvafyod1#

所以经过一番挖掘,我找到了一些选择(注意:我使用的是mac电脑,因此#2可能不适用于所有人)。
包括 --network=hostdocker run 命令(如图所示)。
不要改变主意 docker run 命令,而不是连接到 host.docker.internal:9092 容器内部的使用者/发布者代码。如图所示。
我无法让#1为我工作(我确信这是用户错误)。但是#2工作得很好,只需要在容器内更改配置。

相关问题