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

Windows下Docker部署Apache Kafka遇端口占用问题求助

解决Docker部署Kafka时的端口9092冲突问题

问题根源

你的docker-compose.yml中,spark服务和kafka服务同时将容器内的9092端口映射到主机的9092端口,同一主机端口无法被多个服务绑定,这是导致端口占用错误的直接原因。

解决方案

修改docker-compose.yml的端口映射配置,给其中一个服务更换主机端口即可,同时注意同步Kafka的广告监听配置(如果修改Kafka的端口)。

方案1:修改Kafka的主机端口

将Kafka的主机端口改为9093,并同步更新KAFKA_ADVERTISED_LISTENERS配置,确保外部客户端能正确访问:

version: "3"
services:
  spark:
    image: jupyter/pyspark-notebook
    ports:
      - "9092:9092"
      - "4010-4109:4010-4109"
    volumes:
      - ./notebooks:/home/jovyan/work/notebooks/
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    container_name: zookeeper
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:latest'
    container_name: kafka  # 修正原拼写错误:kakfa → kafka
    ports:
      - '9093:9092'  # 主机端口改为9093
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_LISTENERS=PLAINTEXT://:9092
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9093  # 同步修改广告监听端口
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper 

方案2:修改Spark的主机端口

如果希望Kafka保留9092端口,可修改Spark的主机映射端口:

version: "3"
services:
  spark:
    image: jupyter/pyspark-notebook
    ports:
      - "9094:9092"  # 主机端口改为9094
      - "4010-4109:4010-4109"
    volumes:
      - ./notebooks:/home/jovyan/work/notebooks/
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    container_name: zookeeper
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:latest'
    container_name: kafka  # 修正原拼写错误:kakfa → kafka
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_LISTENERS=PLAINTEXT://:9092
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper 

额外检查(可选)

如果修改端口后仍报错,可检查主机上是否有其他进程占用目标端口:
在Windows命令行执行:

netstat -ano | findstr :<目标端口>

根据返回的进程ID,在任务管理器中结束对应进程后重新启动容器。

验证

修改配置后,执行以下命令启动服务:

docker-compose -f docker-compose.yml up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:35:21