Centos7.9使用docker部署kafka
环境准备
确保系统已具备以下环境:
- 已正确安装 Docker(推荐版本 20+)
- 主机具有公网或可访问外部网络以拉取镜像
拉取镜像
拉取 ZooKeeper 镜像
docker pull bitnami/zookeeper:latest
拉取 Kafka 镜像
docker pull bitnami/kafka:latest
你也可以将
latest
替换为具体版本号,如bitnami/kafka:3.6.0
,以保证版本稳定性。
启动 ZooKeeper 容器
docker run -d --name zookeeper \
-e ALLOW_ANONYMOUS_LOGIN=yes \
-p 2181:2181 \
bitnami/zookeeper:latest
参数解释:
-d
:后台运行容器。--name zookeeper
:设置容器名称为 zookeeper。-e ALLOW_ANONYMOUS_LOGIN=yes
:允许匿名访问 ZooKeeper。-p 2181:2181
:将主机的 2181 端口映射到容器的 2181(ZooKeeper 默认端口)。
启动 Kafka 容器
docker run -d --name kafka \
--link zookeeper:zookeeper \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,PLAINTEXT_INTERNAL://:29092 \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://<你的主机IP>:9092,PLAINTEXT_INTERNAL://kafka:29092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-p 9092:9092 \
bitnami/kafka:latest
⚠️ 请将
<你的主机IP>
替换为实际的主机 IP,如192.168.1.100
。
参数解释:
--name kafka
:设置容器名称为 kafka。--link zookeeper:zookeeper
:使 Kafka 容器内可以通过zookeeper
访问 ZooKeeper。-e KAFKA_BROKER_ID=1
:Kafka broker 的 ID,集群时需唯一。-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
:配置 ZooKeeper 地址。-e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP
:定义监听器协议映射。-e KAFKA_CFG_LISTENERS
:配置 Kafka 实际监听地址(容器内部)。-e KAFKA_CFG_ADVERTISED_LISTENERS
:Kafka 对外暴露的地址,客户端会连接这个地址。-e ALLOW_PLAINTEXT_LISTENER=yes
:允许明文连接(不启用 SSL)。-p 9092:9092
:暴露 Kafka 默认端口。
测试 Kafka 是否正常运行
进入 Kafka 容器
docker exec -it kafka /bin/bash
创建 Topic
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
查看 Topic 列表
kafka-topics.sh --list --bootstrap-server localhost:9092
生产消息
kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
输入几条消息,如:
hello
world
消费消息
打开另一个终端,执行:
docker exec -it kafka /bin/bash
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
可选:数据持久化(推荐生产环境使用)
如需挂载持久化目录,请使用以下参数:
-v /data/kafka:/bitnami/kafka \
-v /data/zookeeper:/bitnami/zookeeper
可视化管理工具:部署 Kafdrop
为了方便查看 Kafka 中的 topic、partition、consumer group 等信息,我们可以部署一个轻量级的 Web 管理工具 —— Kafdrop。
启动 Kafdrop 容器
docker run -d --name kafdrop \
-p 9000:9000 \
-e KAFKA_BROKERCONNECT=<你的主机IP>:9092 \
-e JVM_OPTS="-Xms32M -Xmx128M" \
obsidiandynamics/kafdrop
⚠️ 请将
<你的主机IP>
替换为 Kafka 实例的advertised.listeners
地址,例如192.168.1.100
。
参数解释
--name kafdrop
:设置容器名称为 kafdrop。-p 9000:9000
:将 Web 管理界面映射到本机 9000 端口。-e KAFKA_BROKERCONNECT
:指定 Kafka 的地址,供 Kafdrop 连接。-e JVM_OPTS
:设置 Java 堆大小限制(可选)。
🌐 访问界面
浏览器打开: http://<你的主机IP>:9000 即可访问 Kafka 的可视化管理界面。