当前位置: 首页 > 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 核心机制
  • 原型验证:模拟生产环境行为
http://www.dtcms.com/a/111019.html

相关文章:

  • 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
  • 新能源汽车整车动力学模型深度解析:面向动力经济性测试工程师的硬核指南
  • 3500 阶乘求和
  • VS2022中按照免费使用的AI助手Fitten code
  • 了解拦截器
  • 高并发系统架构设计的深度解析与实施指南【大模型总结】
  • 将有序数组转化为二叉树
  • Java面试黄金宝典33
  • 深入学习Pytorch:第一章-初步认知
  • 字符串——面试考察高频算法题
  • 腾讯云 阿里云服务器运用宝塔搭建fprc服务器报错 :frp使用http拒绝连接 frpc.exe -c frpc.toml 拒绝访问 解决方法
  • java: 错误: 不支持发行版本 22 无效的发行版本