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_CONNECT | ZooKeeper 连接地址 | 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
总结
- 推荐版本:Kafka 3.4.0 + ZooKeeper 3.8(稳定且功能完善)
- 推荐方式:使用 Docker Compose,一键部署
- 镜像选择:
bitnami/kafka
镜像维护良好,文档齐全 - 数据持久化:通过 volumes 配置确保数据不会随容器删除而丢失
这种安装方式适合开发、测试环境,甚至小规模生产环境,简单高效且易于管理。