当前位置: 首页 > news >正文

【Kafka基础】Docker Compose快速部署Kafka单机环境

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.8
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes  # 生产环境应设为no并配置认证
      - ZOO_DATA_DIR=/bitnami/zookeeper/data
    volumes:
      - ./data/zookeeper:/bitnami/zookeeper
    user: root  # 临时解决权限问题,生产环境应配置正确权限
    networks:
      - kafka-net

  kafka:
    image: bitnami/kafka:3.6
    container_name: kafka
    ports:
      - "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://:9092
    volumes:
      - ./data/kafka:/bitnami/kafka
    user: root
    depends_on:
      - zookeeper
    networks:
      - kafka-net

networks:
  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 核心机制
  • 原型验证:模拟生产环境行为

相关文章:

  • 618SJBH宾馆信息管理系统的设计与实现
  • 积分赛——读取实时时间
  • java 代码错误分析
  • 上电电压跌落处理方法
  • Derivatives and Differentiation (导数和微分)
  • 【虚拟仪器技术】西南大学虚拟仪器复习试题,labview虚拟仪器试卷
  • 冷门预警,德甲006:奥格斯堡VS拜仁,奥格斯堡防线稳健
  • 【数据结构】_队列
  • Elasticsearch:使用机器学习生成筛选器和分类标签
  • Go语言-初学者日记(七):用 Go 写一个 RESTful API 服务!
  • 解锁多元养生密码,开启活力生活
  • object中的方法,和String类常用api
  • 云效跨账号迁移
  • 【再探图论】深入理解图论经典算法
  • TCP BBR 的优化
  • CV深度学习
  • AI助力高效PPT制作:从内容生成到设计优化
  • 解决浏览器报错Mixed Content
  • 赚钱模拟器--百宝库v0.1.0
  • 新能源汽车整车动力学模型深度解析:面向动力经济性测试工程师的硬核指南
  • 山东企业网络推广软件系统/优化推广网站淄博
  • c2c网站建设策划书/站长收录
  • 网站开发网站制作报价单/百度模拟点击软件判刑了
  • 域名对网站建设有什么影响吗/搜索引擎营销与seo优化
  • 成都网站模板/大数据营销专业
  • 中国十大购物网站/内蒙古seo