【在 macOS 系统上使用 Docker 启动 Kafka 的完整指南】

🐳 一、前提条件

  1. 安装 Docker Desktop for Mac

  2. 确认 Docker 正常运行

bash 复制代码
docker --version
docker-compose --version

🚀 二、方式一:使用 Docker Compose(推荐)

1. 创建 docker-compose.yml 文件

yaml 复制代码
version: '3.8'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:latest
    container_name: zookeeper
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
    ports:
      - "2181:2181"

  kafka:
    image: confluentinc/cp-kafka:latest
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
      - "9093:9093"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9093,EXTERNAL://localhost:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: true

2. 启动服务

bash 复制代码
# 在 docker-compose.yml 所在目录执行
docker-compose up -d

3. 验证 Kafka 是否启动成功

bash 复制代码
# 查看运行中的容器
docker ps

# 进入 Kafka 容器
docker exec -it kafka bash

# 创建测试 topic
kafka-topics --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

# 列出所有 topic
kafka-topics --list --bootstrap-server localhost:9092

🧪 三、测试 Kafka 连通性

1. 启动消费者

bash 复制代码
docker exec -it kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092

2. 启动生产者并发送消息

bash 复制代码
docker exec -it kafka kafka-console-producer --topic test-topic --bootstrap-server localhost:9092

然后输入消息,按回车发送,观察消费者端是否收到。


🛠️ 四、方式二:单独使用 Docker 命令

如果你不想用 docker-compose,也可以分别启动 Zookeeper 和 Kafka:

1. 启动 Zookeeper

bash 复制代码
docker run -d \
  --name zookeeper \
  -p 2181:2181 \
  confluentinc/cp-zookeeper:latest \
  bash -c "echo 'clientPort=2181' > zookeeper.properties && echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties && echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties && zookeeper-server-start zookeeper.properties"

或者更简单的方式:

bash 复制代码
docker run -d \
  --name zookeeper \
  -p 2181:2181 \
  confluentinc/cp-zookeeper:latest

2. 启动 Kafka

bash 复制代码
docker run -d \
  --name kafka \
  --link zookeeper \
  -p 9092:9092 \
  -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
  -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
  -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
  confluentinc/cp-kafka:latest

🔧 五、常用 Kafka 命令(在容器内执行)

bash 复制代码
# 进入容器
docker exec -it kafka bash

# 创建 topic
kafka-topics --create --topic my-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

# 查看所有 topics
kafka-topics --list --bootstrap-server localhost:9092

# 查看 topic 详情
kafka-topics --describe --topic my-topic --bootstrap-server localhost:9092

# 发送消息
kafka-console-producer --topic my-topic --bootstrap-server localhost:9092

# 消费消息
kafka-console-consumer --topic my-topic --bootstrap-server localhost:9092 --from-beginning

# 查看消费者组
kafka-consumer-groups --bootstrap-server localhost:9092 --list

🛑 六、停止和清理

停止服务

bash 复制代码
# docker-compose 方式
docker-compose down

# 单独容器方式
docker stop kafka zookeeper
docker rm kafka zookeeper

清理数据(可选)

bash 复制代码
docker volume prune

📝 七、Spring Boot 配置对应的 Kafka 地址

在你的 application.yml 中:

yaml 复制代码
spring:
  kafka:
    bootstrap-servers: localhost:9092
    # 其他配置...

✅ 八、验证连接

启动你的 Spring Boot 应用后,可以通过 Swagger UI 测试 Kafka 消息发送:

复制代码
http://localhost:8080/swagger-ui.html

可进一步扩展内容:

  • Kafka Manager (Confluent Control Center) 部署
  • 多 Broker Kafka 集群部署
  • Kafka 数据持久化配置
  • Kafka 监控和日志配置
相关推荐
腾讯云中间件4 小时前
TDMQ CKafka 版客户端实战指南系列之二:消费消息最佳实践
kafka·消息队列
腾讯云中间件4 小时前
TDMQ CKafka 版客户端实战指南系列之一:生产最佳实践
kafka·消息队列·腾讯
杨杨杨大侠4 小时前
案例03-附件E-部署运维
java·docker·github
Java陈序员8 小时前
直播录制神器!一款多平台直播流自动录制客户端!
python·docker·ffmpeg
水冗水孚9 小时前
你用过docker部署前端项目吗?Tell Me Why 为何要用docker部署前端项目呢?
ubuntu·docker·容器
飞询9 小时前
docker 部署 sftp
运维·docker
goodSleep1 天前
更新Mac OS Tahoe26用命令恢复 Mac 启动台时不小心禁用了聚焦搜索
macos
涛哥开发笔记1 天前
Kakfa核心概念和架构
kafka
小Wang1 天前
npm私有库创建(docker+verdaccio)
前端·docker·npm
深圳蔓延科技2 天前
Kafka的高性能之路
后端·kafka