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
相关产品推荐
相关产品推荐

