本地部署Confluent Kafka社区版:broker容器持续退出求助
解决Docker部署Kafka Broker容器莫名退出的问题
核心问题定位
从容器退出码137可以直接判断:容器被系统OOM Killer(内存不足终止器)强制关闭,当前运行的服务过多导致主机资源过载,这也是broker、connect、rest-proxy同时退出的原因。
解决思路与步骤
1. 简化Docker Compose配置
你仅需单节点Kafka+Schema Registry,直接删除不需要的服务(ksqldb系列、connect、rest-proxy、datagen),大幅减少资源消耗。以下是精简后的配置示例:
version: '3' services: zookeeper: image: confluentinc/cp-zookeeper:5.5.1 environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 ports: - "2181:2181" deploy: resources: limits: memory: 512M broker: image: confluentinc/cp-kafka:5.5.1 depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 deploy: resources: limits: memory: 1G schema-registry: image: confluentinc/cp-schema-registry:5.5.1 depends_on: - broker ports: - "8081:8081" environment: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: PLAINTEXT://broker:9092 deploy: resources: limits: memory: 512M
2. 配置资源限制与Docker环境
- 给每个服务明确设置内存上限(如上述配置中的
deploy.resources.limits.memory),避免容器无限制占用内存; - 确保本地Docker环境分配了足够内存:Docker Desktop建议至少分配2G以上,若运行多个服务可增加到4G。
3. 验证服务状态
启动精简后的配置后,执行以下命令确认状态:
# 后台启动服务 docker compose up -d # 查看容器状态 docker compose ps # 查看broker日志确认无异常 docker compose logs broker
内容的提问来源于stack exchange,提问作者guru
相关产品推荐
相关产品推荐

