卡夫卡:Docker容器和NoBrokersAvailable错误
我使用以下方式运行卡夫卡:卡夫卡:Docker容器和NoBrokersAvailable错误,docker,apache-kafka,Docker,Apache Kafka,我使用以下方式运行卡夫卡: docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=192.168.99.100 --env ADVERTISED_PORT=9092 spotify/kafka 据 --p标志用于发布网络端口。在容器内,ZooKeeper在2181监听,Kafka在9092监听。如果我们不使用-p发布它们,那么它们在容器外部是不可用的,因此我们不能真正使用它们。 -–env标志用于设置环境变量。根据spotify/
docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=192.168.99.100 --env ADVERTISED_PORT=9092 spotify/kafka
据
--p标志用于发布网络端口。在容器内,ZooKeeper在2181监听,Kafka在9092监听。如果我们不使用-p发布它们,那么它们在容器外部是不可用的,因此我们不能真正使用它们。
-–env标志用于设置环境变量。根据spotify/kafka图像的文档,这些是必需的
-最后一部分指定了要运行的映像:spotify/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.nobrokersavable:nobrokersavable
如何确保两个Docker容器可以通信?您必须提供运行Kafka服务器的Docker容器IP,而不是localhost 像 producer=KafkaProducer(引导服务器=':9092', value\u serializer=lambda v:json.dumps(v.encode('utf-8'))
使用容器ID运行:docker inspect在底部的“NetworkSettings”下,您可以找到“IPAddress”,但出现下一个错误:KafkaTimeoutError。我为它创建了一个新问题: