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.8
container_name: zookeeper
ports:
- "2181:2181"
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
networks:
- kafka-net
kafka:
image: bitnami/kafka:3.4.0
container_name: kafka
ports:
- "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=yes
depends_on:
- zookeeper
networks:
- kafka-net
volumes:
- kafka_data:/bitnami/kafka
networks:
kafka-net:
driver: bridge
volumes:
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.1
environment:
- 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 配置确保数据不会随容器删除而丢失

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

posted @ 2025-09-09 17:46  yjbjingcha  阅读(16)  评论(0)    收藏  举报