Docker部署Kafka消息队列

为什么选择Docker部署Kafka消息队列

Kafka是常用的消息队列中间件,但原生安装需要配置Java环境和ZooKeeper,对新手不太友好。
使用Docker可以把Kafka和ZooKeeper打包进容器,一条命令就能启动,环境和依赖都不用自己操心。
本文会用最新镜像演示完整部署流程,让你在十分钟内跑通消息收发。

准备条件:一台安装了Docker的服务器

操作前请确保服务器上已安装Docker。
如果没有安装,可以参考以下命令快速安装(CentOS/Ubuntu通用):

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

安装完成后执行 sudo docker version,看到版本号就说明正常。
如果你使用宝塔面板,可以在“软件商店”搜索Docker直接安装,省去命令行。

拉取镜像并启动容器

Kafka从2.8版本开始可以脱离ZooKeeper运行(KRaft模式),但主流生产环境仍然依赖ZooKeeper。
这里采用经典方案:同时启动ZooKeeper和Kafka容器。

首先拉取镜像:

docker pull bitnami/zookeeper:latest
docker pull bitnami/kafka:latest

使用 docker network 创建一个专用网络,方便容器间通信:

docker network create kafka-network

启动ZooKeeper容器(注意暴露端口2181):

docker run -d --name zookeeper --network kafka-network -p 2181:2181 bitnami/zookeeper:latest

启动Kafka容器,这里需要设置环境变量让Kafka知道ZooKeeper的地址,并开启外部访问:

docker run -d --name kafka --network kafka-network -p 9092:9092 \
  -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
  -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://你的服务器IP:9092 \
  -e ALLOW_PLAINTEXT_LISTENER=yes \
  bitnami/kafka:latest

注意将 你的服务器IP 替换为实际公网IP或内网IP。
如果只在本地测试,可以使用 localhost,但其他机器无法连接。

检查容器是否正常运行:

docker ps | grep kafka

出现kafka容器且状态为Up就对了。

创建主题并验证消息收发

Kafka需要先创建主题(topic)才能收发消息。
进入Kafka容器执行命令:

docker exec -it kafka bash

在容器内创建主题:

kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

如果出现“Created topic test-topic”,说明成功。
可以用以下命令查看主题列表确认:

kafka-topics.sh --list --bootstrap-server localhost:9092

接下来开启两个终端窗口测试消息。

终端1:启动消费者

进入容器后执行:

kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --from-beginning

终端2:启动生产者

进入容器后执行:

kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

在生产者窗口输入任意文本并回车,查看消费者窗口是否立刻收到。
如果能收到,说明Kafka消息队列已正常工作。

常见报错与避坑说明

  • 端口冲突:如果本机已经运行了其他服务占用2181或9092,启动容器会失败。解决办法是修改宿主机映射端口,例如 -p 2182:2181-p 9093:9092,然后配置文件里对应修改。
  • 外部客户端无法连接:检查 ADVERTISED_LISTENERS 是否填写了正确的IP。如果填了localhost,外部客户端会尝试连接容器内部的localhost,导致失败。建议直接用服务器公网IP或内网IP。
  • Kafka版本与ZooKeeper版本不兼容:建议使用同一镜像源(如这里都选bitnami),避免版本冲突。
  • 容器重启后数据丢失:如果容器被删除,Kafka中的消息也会丢失。生产环境应挂载数据卷持久化,比如加参数 -v /data/kafka:/bitnami/kafka

如果你在启动时遇到“Kafka连接ZooKeeper超时”,多数是因为网络配置不对。
确认两个容器都在同一个 kafka-network 中,并且Kafka的 ZOOKEEPER_CONNECT 写的是容器名 zookeeper:2181

结束语

以上就是在Docker环境部署Kafka消息队列的完整步骤。
建议先按上面的流程走一遍,确认能正常收发后再根据实际场景微调配置。
遇到问题优先检查网络连通性和IP地址设置。
希望这篇教程能帮你快速上手Docker部署Kafka。

分享到:
上一篇
Linux服务器时间校准方法教程
下一篇
服务器高防IP选购技巧:零基础也能看懂的入门指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意