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 的可视化管理界面。

posted @ 2025-06-04 16:04  Aminor~  阅读(189)  评论(0)    收藏  举报