You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从其他机器访问Windows上docker-compose部署的Kafka服务?

Windows Docker单节点Kafka跨局域网访问解决方案

修正后docker-compose配置

version: '3.7'
services:
  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    ports:
      - "0.0.0.0:2181:2181"
    expose:
      - "2181"
    volumes:
    - type: bind
      source: "G:\\path\\to\\zookeeper"
      target: /opt/zookeeper-3.4.6/data

  kafka:
    image: wurstmeister/kafka
    ports:
      - "0.0.0.0:9092:9092"
    expose:
      - "9092"
    environment:
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093, OUTSIDE://192.168.0.36:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT, OUTSIDE:PLAINTEXT
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_BROKER_ID: 1
      KAFKA_LOG_DIRS: "/kafka"
      KAFKA_ALLOW_PLAINTEXT_LISTENER: 'true'
    volumes:
    - type: bind
      source: "G:\\path\\to\\logs"
      target: /kafka/
    depends_on:
      - zookeeper

操作步骤

  • 停止原有容器并清理残留数据卷,避免旧配置残留:
    docker-compose down -v
    
  • 重新启动服务:
    docker-compose up -d
    
  • 进入Kafka容器验证配置是否生效:
    docker exec -it <kafka容器名> cat /opt/kafka/config/server.properties | grep advertised.listeners
    
    确保输出包含OUTSIDE://192.168.0.36:9092即为配置生效。

客户端测试代码(kafka-python)

from kafka import KafkaProducer, KafkaConsumer

# 生产者测试
producer = KafkaProducer(
    bootstrap_servers=['192.168.0.36:9092'],
    # 替换为你部署的Kafka实际版本,wurstmeister latest镜像默认对应2.8.x版本
    api_version=(2,8,0)
)
producer.send('test_topic', value=b'test message')
producer.flush()

# 消费者测试
consumer = KafkaConsumer(
    'test_topic',
    bootstrap_servers=['192.168.0.36:9092'],
    api_version=(2,8,0),
    auto_offset_reset='earliest',
    group_id='test_group'
)
for message in consumer:
    print(f"收到消息: {message.value.decode()}")

异常排查

  • 如果依旧报错,先确认宿主机器和客户端的9092端口连通性:在客户端执行telnet 192.168.0.36 9092确认连通正常
  • 检查kafka-python版本,建议升级到最新稳定版:pip install --upgrade kafka-python
  • 确认WSL2端口映射规则未被其他占用,可执行netsh interface portproxy show all查看已配置的映射规则

内容的提问来源于stack exchange,提问作者aSaffary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 04:51:03