你可以通过在自己的容器中运行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



