无法连接在docker中运行的Kafka

时间:2017-12-26 21:36:09

标签: docker apache-kafka

我在docker compose yml文件中为广告的监听器提供了以下配置

我的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"); 

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

  

WARN o.apache.kafka.clients.NetworkClient - 获取相关ID为1的元数据时出错:{foo = LEADER_NOT_AVAILABLE}

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

1 个答案:

答案 0 :(得分:0)

我认为你需要容器​​中的expose port kafka。您可以在docker-compose文件中执行此操作,方法是添加以下内容:

ports: "29092:29092"

这应该在kafka服务定义中。