2 回答
TA贡献1780条经验 获得超1个赞
以下内容使用的是confluentincdocker images,不是wurstmeister/kafka,尽管有类似的配置,但我没有尝试过。如果使用该图像,请阅读其Connectivity Wiki。
debezium/kafka这里提到它的文档。
我尝试了bitnamiKafka图像,并使其与这些设置一起使用
归根结底,在容器中运行的都是相同的Apache Kafka。您只取决于它的配置方式。
有关补充阅读和网络图,请参阅@rmoff的此博客。
该Confluent快速入门文档假定所有生产和消费请求都将在Docker网络内。
您可以通过在自己的容器中运行Kafka客户端代码来解决该问题,但否则,您需要添加更多环境变量以在外部暴露该容器,同时使其仍在Docker网络中运行。
首先添加一个协议映射PLAINTEXT_HOST:PLAINTEXT,它将侦听器协议映射到Kafka协议
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
然后在不同的端口上设置两个播发的侦听器。(kafka:9092这里指的是Docker容器的名称)。请注意,协议与上面映射的右侧值匹配
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
运行容器时,添加-p 29092:29092用于主机端口的映射
tl; dr(具有上述设置)
在Docker网络外部运行任何Kafka客户端时(包括您可能已在本地安装的CLI工具),可localhost:29092用于引导服务器和localhost:2181Zookeeper
在Docker网络中运行应用程序时,可kafka:9092用于引导服务器和zookeeper:2181Zookeeper
添加回答
举报