无法连接在docker中运行的Kafka

我在docker compose yml文件中为广告的侦听器configuration了下面的configuration

我的docker-compose.yml

version: '2' services: zookeeper: image: confluentinc/cp-zookeeper:latest network_mode: host environment: ZOOKEEPER_CLIENT_PORT: 32181 ZOOKEEPER_TICK_TIME: 2000 extra_hosts: - "moby:127.0.0.1" kafka: image: confluentinc/cp-kafka:latest network_mode: host depends_on: - zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: localhost:32181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://lnc52c9:29092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 extra_hosts: - "moby:127.0.0.1" 

我使用下面的属性连接这个kafka

 props.put("bootstrap.servers", "lnc52c9:29092"); 

当我尝试在该服务器中产生消息时,我收到下面的错误

警告o.apache.kafka.clients.NetworkClient – 使用关联ID 1获取元数据时出错:{foo = LEADER_NOT_AVAILABLE}

主机可以从我的机器ping通,因为它们都在同一个networking中,没有防火墙问题。 当我在docker容器中使用命令hostname ,我可以看到相同的主机名。 我错过了什么吗?

我认为你需要暴露容器中的卡夫卡港口 。 您可以在docker-compose文件中通过添加以下内容来完成此操作:

 ports: "29092:29092" 

这应该在kafka服务定义中。