Kafka:Docker容器和NoBrokersAvailable错误

时间:2018-01-14 17:10:20

标签: docker apache-kafka

我使用以下方式运行Kafka:

docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=192.168.99.100 --env ADVERTISED_PORT=9092 spotify/kafka

根据https://ngeor.wordpress.com/2017/03/25/kafka-with-docker-a-docker-introduction/ - -p标志用于发布网络端口。在容器内部,ZooKeeper在2181监听,Kafka在9092监听。如果我们不用-p发布它们,它们在容器外部不可用,所以我们不能真正使用它们。 - -env标志设置环境变量。根据spotify / kafka图像的文档需要这些 - 最后一部分指定我们要运行的图像:spotify / kafka

现在我想将生产者的消息发送到这个kafka端口。从另一个docker容器中:

from kafka import KafkaProducer
import json

producer = KafkaProducer(bootstrap_servers='localhost:9092',
                         value_serializer=lambda v: json.dumps(v).encode('utf-8'))

但是这会产生错误:kafka.errors.NoBrokersAvailable:NoBrokersAvailable

我怎样才能确保两个Docker容器可以通信?

1 个答案:

答案 0 :(得分:0)

您必须提供运行Kafka服务器的docker容器IP,而不是localhost。

喜欢

  

producer = KafkaProducer(bootstrap_servers =':9092',                            value_serializer = lambda v:json.dumps(v).encode(' utf-8'))