Networking 如何与docker内部运行的Kafka服务器通信

Networking 如何与docker内部运行的Kafka服务器通信,networking,docker,apache-kafka,Networking,Docker,Apache Kafka,我在Scala应用程序中使用apache Kafka Sumer与Kafka服务器对话,Kafka和Zookeeper服务在我的虚拟机上的docker容器中运行(Scala应用程序也在此虚拟机上运行)。我已将KafkaConsumer的属性“bootstrap.servers”设置为使用127.0.0.1:9092 KafkaConsumer会记录“向代理127.0.0.1:9092发送组queuemanager_testGroup的协调器请求”。问题似乎是Kafka客户端代码正在根据它收到的响

我在Scala应用程序中使用apache Kafka Sumer与Kafka服务器对话,Kafka和Zookeeper服务在我的虚拟机上的docker容器中运行(Scala应用程序也在此虚拟机上运行)。我已将KafkaConsumer的属性“bootstrap.servers”设置为使用127.0.0.1:9092

KafkaConsumer会记录“向代理127.0.0.1:9092发送组queuemanager_testGroup的协调器请求”。问题似乎是Kafka客户端代码正在根据它收到的响应设置协调器值,该响应包含responseBody={error\u code=0,coordinator={node\u id=0,host=e7059f0f6580,port=9092},这就是它为将来的连接设置主机的方式。随后,它抱怨无法解析地址:e7059f0f6580

地址e7059f0f6580是该docker容器的容器ID。 我已经使用telnet进行了测试,我的虚拟机没有将其作为主机名进行检测


我需要更改什么设置,以便docker上的Kafka在其响应中返回localhost/127.0.0.1作为主机?或者我还有什么遗漏/做得不正确的地方吗?

更新

播发的.host.name
已被弃用,应避免使用
--override

添加/编辑播发的。侦听器的格式为

[PROTOCOL]://[EXTERNAL.HOST.NAME]:[PORT]
还要确保
侦听器的属性中也列出了
端口


在连续数小时调查这个问题后,发现有一种方法 启动Kafka服务器时设置主机名,如下所示:
kafka-server-start.sh——覆盖播发的.host.name=xxx
(在我的例子中是localhost)

那么。。。更相关的问题是“您如何运行集装箱卡夫卡服务”。卡夫卡需要动物园管理员来工作。通常,人们使用docker compose来运行依赖容器。所以您需要提供Dockerfile、docker-compose.yaml或启动这些容器的命令。还有一件事。。。请花一些时间来理解docker的一些更简单的东西,例如hello world web应用程序。一旦你明白了,你就会明白这个问题的答案。