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

docker 安装kafaka常用版本

推荐方法:使用 Docker Compose(最简单)

这是最推荐的方法,通过一个 YAML 文件定义并启动所有相关服务(ZooKeeper + Kafka)。

1. 确保系统已安装 Docker 和 Docker Compose

# 检查 Docker 是否安装
docker --version# 检查 Docker Compose 是否安装
docker-compose --version

如果未安装,请先安装:

# 安装 Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 创建 docker-compose.yml 文件

创建一个专门目录并编辑 compose 文件:

mkdir kafka-docker && cd kafka-docker
vi docker-compose.yml

将以下内容复制到文件中(这里使用 Kafka 3.4.0,这是一个稳定且常用的版本):

version: '3.8'services:zookeeper:image: bitnami/zookeeper:3.8container_name: zookeeperports:- "2181:2181"environment:- ALLOW_ANONYMOUS_LOGIN=yesnetworks:- kafka-netkafka:image: bitnami/kafka:3.4.0container_name: kafkaports:- "9092:9092"- "9093:9093" # 可选,用于外部监控或其他协议environment:- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093- ALLOW_PLAINTEXT_LISTENER=yesdepends_on:- zookeepernetworks:- kafka-netvolumes:- kafka_data:/bitnami/kafkanetworks:kafka-net:driver: bridgevolumes:kafka_data:driver: local

3. 启动 Kafka 集群

docker-compose.yml 文件所在目录运行:

# 后台启动
docker-compose up -d# 查看启动状态
docker-compose ps# 查看实时日志
docker-compose logs -f kafka

4. 验证安装

进入 Kafka 容器执行测试命令:

# 进入 Kafka 容器
docker exec -it kafka /bin/bash# 创建一个测试主题
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1# 列出所有主题
kafka-topics.sh --list --bootstrap-server localhost:9092# 启动一个控制台生产者
kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092# 另开一个终端,启动一个控制台消费者
docker exec -it kafka kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

其他常用版本配置

如果您需要其他版本,只需修改 image 标签即可。以下是几个常用的版本组合:

Kafka 2.13-3.3.1 (另一个稳定版本)

services:zookeeper:image: bitnami/zookeeper:3.8# ...其他配置不变kafka:image: bitnami/kafka:3.3.1# ...其他配置不变

Kafka 2.8.1 (较旧的稳定版本)

services:zookeeper:image: wurstmeister/zookeeper:latest# ...其他配置不变kafka:image: wurstmeister/kafka:2.8.1environment:- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092

重要配置说明

网络配置

  • localhost:9093:用于宿主机外部连接
  • kafka:9092:用于Docker容器内部通信

环境变量说明

变量名说明示例值
KAFKA_CFG_ZOOKEEPER_CONNECTZooKeeper 连接地址zookeeper:2181
KAFKA_CFG_ADVERTISED_LISTENERS对外发布的服务地址CLIENT://kafka:9092,EXTERNAL://localhost:9093
ALLOW_PLAINTEXT_LISTENER允许明文传输yes

客户端连接方式

从 Docker 内部连接

bootstrap-server: kafka:9092

从宿主机外部连接

bootstrap-server: localhost:9093

从其他服务器连接

bootstrap-server: <服务器IP>:9093

常用管理命令

# 停止服务
docker-compose down# 停止并删除数据卷
docker-compose down -v# 重启服务
docker-compose restart# 查看服务状态
docker-compose ps# 查看Kafka日志
docker-compose logs kafka

总结

  1. 推荐版本:Kafka 3.4.0 + ZooKeeper 3.8(稳定且功能完善)
  2. 推荐方式:使用 Docker Compose,一键部署
  3. 镜像选择bitnami/kafka 镜像维护良好,文档齐全
  4. 数据持久化:通过 volumes 配置确保数据不会随容器删除而丢失

这种安装方式适合开发、测试环境,甚至小规模生产环境,简单高效且易于管理。

http://www.xdnf.cn/news/20112.html

相关文章:

  • 错误波形曲线
  • Qt信号与槽机制全面解析
  • Redis 事务:餐厅后厨的 “批量订单处理” 流程
  • 两条平面直线之间通过三次多项式曲线进行过渡的方法介绍
  • 雅菲奥朗SRE知识墙分享(七):『可观测性的定义与实践』
  • C++两个字符串的结合
  • 本地 Docker 环境 Solr 配置 SSL 证书
  • SQL与数据库笔记
  • Windows搭建WebDAV+Raidrive,实现磁盘映射
  • CentOS安装或升级protoc
  • 【学习笔记】解决 JWT 解析报错:Claims claims = JwtUtil.parseJWT(...) Error Code 401(token过期)
  • 开讲啦|MBSE公开课:第五集 MBSE中期设想(下)
  • Process Explorer 学习笔记(第三章3.2.4):找出窗口对应的进程
  • Python+DRVT 从外部调用 Revit:批量创建梁
  • PiscCode轨迹跟踪Mediapipe + OpenCV进阶:速度估算
  • VIVADO的IP核 DDS快速使用——生成正弦波,线性调频波
  • 【FastDDS】Discovery ( 04-STATIC Discovery Settings)
  • yolov8环境配置:从安装到卸载,从入门到放弃。
  • std::complex
  • 深入剖析Spring动态代理:揭秘JDK动态代理如何精确路由接口方法调用
  • 实习结束,秋招开启
  • 通过API接口管理企业微信通讯录案例
  • AI大模型如何重塑日常?从智能办公到生活服务的5个核心改变
  • 算法模板(Java版)_DFS与BFS
  • 贵州移动创维E900V22F-S905L3SB-全分区备份
  • 【Linux网络编程】应用层协议-----HTTPS协议
  • C#中IEnumerable 、IAsyncEnumerable、yield
  • 13问详解VoLTE视频客服:菊风带你从基础到应用,厘清所有疑惑
  • 储能调峰新实践:智慧能源平台如何保障风电消纳与电网稳定?
  • 从 0 到 1 攻克订单表分表分库:亿级流量下的数据库架构实战指南