1 准备工作
 
1.1 安装Docker和Docker Compose
 
 Docker安装请参考: Docker入门指南:1分钟搞定安装 + 常用命令,轻松入门容器化!-CSDN博客 
 
 
 Docker Compose安装请参考: 【docker compose入门指南】安装与常用命令参数全解析,助你入门compose!_docker composer-CSDN博客 
 
 
2 编写Docker Compose文件
 
 # 创建目录并编写docker-compose.yml
cd /export/home
mkdir kafka_docker
cd kafka_docker
cat >docker-compose.yml<<EOF
version: '3.8'services:zookeeper:image: bitnami/zookeeper:3.8container_name: zookeeperports:- "2181:2181"environment:- ALLOW_ANONYMOUS_LOGIN=yes  # 生产环境应设为no并配置认证- ZOO_DATA_DIR=/bitnami/zookeeper/datavolumes:- ./data/zookeeper:/bitnami/zookeeperuser: root  # 临时解决权限问题,生产环境应配置正确权限networks:- kafka-netkafka:image: bitnami/kafka:3.6container_name: kafkaports:- "9092:9092"environment:- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181- ALLOW_PLAINTEXT_LISTENER=yes- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.10.30:9092- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092volumes:- ./data/kafka:/bitnami/kafkauser: rootdepends_on:- zookeepernetworks:- kafka-netnetworks:kafka-net:driver: bridge
EOF
 
  
3 拉取镜像并启动服务
 
3.1 拉取镜像
 
 # 手动拉取镜像
docker pull bitnami/zookeeper:3.8
docker pull bitnami/kafka:3.6[root@node1 ~]# docker pull bitnami/zookeeper:3.8
3.8: Pulling from bitnami/zookeeper
4bb5b9792f2b: Downloading [=================>                                 ]  101.2MB/297.1MB
4bb5b9792f2b: Downloading [============================================>      ]  265.1MB/297.1MB
4bb5b9792f2b: Extracting [===============================================>   ]  281.9MB/297.1MB
4bb5b9792f2b: Pull complete 
Digest: sha256:4d450d4b1dab610e1012993d2ea78ba00a516b63e74214a57fef40c060ce4986
Status: Downloaded newer image for bitnami/zookeeper:3.8
docker.io/bitnami/zookeeper:3.8
[root@node1 ~]# [root@node1 kafka_docker]# docker pull bitnami/kafka:3.6
3.6: Pulling from bitnami/kafka
43ffa9935816: Downloading [================>                                  ]  126.2MB/379.1MB
43ffa9935816: Downloading [========================================>          ]  309.9MB/379.1MB
43ffa9935816: Extracting [===========================================>       ]    327MB/379.1MB
43ffa9935816: Pull complete 
Digest: sha256:287cec8bf1b254efe016ec66ea77628e31f242b09f3c68a15eec74d93c21a410
Status: Downloaded newer image for bitnami/kafka:3.6
docker.io/bitnami/kafka:3.6
[root@node1 kafka_docker]# 
 
  
3.2 启动服务
 
 # 创建持久化目录
mkdir -p ./data/zookeeper ./data/kafka# 启动服务(后台运行)
docker-compose up -d# 查看容器状态
docker ps -a
[root@node1 ~]# docker ps -a
CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS          PORTS                                                                     NAMES
f0762029c4aa   bitnami/kafka:3.6       "/opt/bitnami/script…"   25 seconds ago   Up 23 seconds   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                                 kafka
d821a448f5b2   bitnami/zookeeper:3.8   "/opt/bitnami/script…"   2 minutes ago    Up 24 seconds   2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp   zookeeper
[root@node1 ~]# 
 
  
4 验证Kafka功能
 
4.1 创建Topic
 
 docker exec -it kafka \bash -c "kafka-topics.sh --create --bootstrap-server 192.168.10.30:9092 --replication-factor 1 --partitions 3 --topic test-topic"[root@node1 ~]# docker exec -it kafka \
>   bash -c "kafka-topics.sh --create --bootstrap-server 192.168.10.30:9092 --replication-factor 1 --partitions 3 --topic test-topic"
>   bash -c "kafka-topics.sh --create --bootstrap-server 192.168.10.30:9092 --replication-factor 1 --partitions 3 --topic test-topic"
Created topic test-topic.
[root@node1 ~]# 
 
  
4.2 生产消息
 
 docker exec -it kafka \bash -c "kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic"
# 输入任意消息后按 Ctrl+C 退出[root@node1 ~]# docker exec -it kafka \
>   bash -c "kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic"
>test1
>test2
>test3
>^C[root@node1 ~]# 
 
  
4.3 消费消息
 
 docker exec -it kafka \bash -c "kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning">^C[root@node1 ~]# docker exec -it kafka \
>   bash -c "kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning"
test1
test2
test3
 
  
5 总结
 
 通过上述步骤,您已成功部署了一个包含 ZooKeeper、Kafka单机环境。此方案适用于: 
  - 开发测试:快速验证消息队列功能
- 本地学习:理解 Kafka 核心机制
- 原型验证:模拟生产环境行为