当前位置: 首页 > news >正文

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

🐳 一、前提条件

  1. 安装 Docker Desktop for Mac

    • 下载地址:https://www.docker.com/products/docker-desktop
    • 安装并启动 Docker
  2. 确认 Docker 正常运行

docker --version
docker-compose --version

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

1. 创建 docker-compose.yml 文件

version: '3.8'services:zookeeper:image: confluentinc/cp-zookeeper:latestcontainer_name: zookeeperenvironment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000ports:- "2181:2181"kafka:image: confluentinc/cp-kafka:latestcontainer_name: kafkadepends_on:- zookeeperports:- "9092:9092"- "9093:9093"environment:KAFKA_BROKER_ID: 1KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9093,EXTERNAL://localhost:9092KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXTKAFKA_INTER_BROKER_LISTENER_NAME: INTERNALKAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1KAFKA_AUTO_CREATE_TOPICS_ENABLE: true

2. 启动服务

# 在 docker-compose.yml 所在目录执行
docker-compose up -d

3. 验证 Kafka 是否启动成功

# 查看运行中的容器
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. 启动消费者

docker exec -it kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092

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

docker exec -it kafka kafka-console-producer --topic test-topic --bootstrap-server localhost:9092

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


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

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

1. 启动 Zookeeper

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"

或者更简单的方式:

docker run -d \--name zookeeper \-p 2181:2181 \confluentinc/cp-zookeeper:latest

2. 启动 Kafka

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 命令(在容器内执行)

# 进入容器
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

🛑 六、停止和清理

停止服务

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

清理数据(可选)

docker volume prune

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

在你的 application.yml 中:

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 监控和日志配置
http://www.dtcms.com/a/354482.html

相关文章:

  • 点评项目(Redis中间件)第二部分Redis基础
  • ArtCAM 2008安装教程
  • React 业务场景使用相关封装(hooks 使用)
  • 【AI自动化】VSCode+Playwright+codegen+nodejs自动化脚本生成
  • Git 删除文件
  • WINTRUST!_ExplodeMessag函数中的pCatAdd
  • 【大前端】React useEffect 详解:从入门到进阶
  • 响应用户:React中的事件处理机制
  • [linux仓库]透视文件IO:从C库函数的‘表象’到系统调用的‘本质’
  • RSA+AES 混合加密不复杂,但落地挺烦,我用 Vue+PHP 封装成了两个库
  • XTUOJ C++小练习(素数的判断,数字塔,字母塔)
  • 亚马逊合规风控升级:详情页排查与多账号运营安全构建
  • Unity游戏打包——Android打包环境(Mac下)
  • PDF压缩如何平衡质量与体积?
  • Electron 简介:Node.js 桌面开发的起点
  • 小鹏自动驾驶的BEV占用网络有哪些优势?
  • “矿山”自动驾驶“路网”编辑功能实现
  • Mip-splatting
  • 在docker 中拉取xxl-job以及配置数据库
  • 【Linux】Linux基础开发工具从入门到实践
  • Redis 哨兵(Sentinel)全面解析
  • JavaSE丨集合框架入门:从0掌握Collection与List核心用法
  • Two Knights (数学)
  • Feign整合Sentinel实现服务降级与Feign拦截器实战指南
  • uni-app 网络请求与后端交互完全指南:从基础到实战
  • 智能养花谁更优?WebIDE PLOY技术与装置的结合及实践价值 —— 精准养护的赋能路径
  • 【LeetCode】29. 两数相除(Divide Two Integers)
  • PhotoshopImageGenerator:基于Photoshop的自动化图像数据集生成工具
  • C# 操作 DXF 文件指南
  • WAF对比传统防火墙的优劣势