前言

关于: KRaft模式下的Kafka启动指南:摆脱Zookeeper依赖 请参考这篇文章

本文主要参数如何 快速使用容器化方式快速的部署 kafka

一、docker 部署kafka单节点

1.1安装docker

可以参考这篇 CentOS 7安装docker并配置镜像加速

1.3 运行kafka(注意修改zookeeper,kafka地址)

docker run -d --name kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.10.180:9092 -p 9092:9092 -v /home/application/Middleware/kafka/data:/var/lib/kafka/data --restart=always docker.cnb.cool/srebro/docker-images/kafka-kraft:3.7.2

1.4 登录kafka容器,创建topic

docker exec -it kafka bash
cd /opt/kafka/bin

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

1.5 登录kafka容器,启动一个生产者

docker exec -it kafka bash
cd /opt/kafka/bin

./kafka-console-producer.sh --topic my_topic_srebro.cn --bootstrap-server localhost:9092

1.6 新开一个终端窗口,登录kafka容器,启动一个消费者

docker exec -it kafka bash
cd /opt/kafka/bin

./kafka-console-consumer.sh --topic my_topic_srebro.cn --bootstrap-server localhost:9092 --from-beginning

1.7 模拟在生产者上,测试几条数据,观察消费者上有没有收到数据

image-20250217172759068

1.8 kafka map 管理工具

A beautiful, concise and powerful kafka web management tool. 一个美观简洁且强大的kafka web管理工具。

  • 官方帮助手册: https://github.com/dushixiang/kafka-map/blob/master/README-zh_CN.md
docker run -d \
    -p 8080:8080 \
    -v /opt/kafka-map/data:/usr/local/kafka-map/data \
    -e DEFAULT_USERNAME=admin \
    -e DEFAULT_PASSWORD=admin \
    --name kafka-map \
    --restart always dushixiang/kafka-map:latest

image-20231115122024832

image-20231115122106331

image-20231115122220324

二、docker-compose 部署kafka单节点

2.1 安装docker-compose

可以参考这篇Cenotos7 安装docker-compose

2.2 编排docker-compose文件

注意先要创建docker 单独的网络

创建自定义网络 : docker network create -d bridge --subnet "192.168.10.0/24" --gateway "192.168.10.1" srebro.cn

version: '3'

services:
  kafka:
    image: docker.cnb.cool/srebro/docker-images/kafka-kraft:3.7.2
    container_name: kafka
    networks:
      - srebro.cn
    environment:
      #KAFKA_LISTENERS: PLAINTEXT://:9092 # Kafka 监听端口配置
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.10.180:9092 # Kafka 对外公布的地址
      #KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT # 监听器与安全协议的映射
      #KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT # Broker 间通信使用的监听器
    ports:
      - "9092:9092"
    volumes:
      - /home/application/Middleware/kafka/data:/var/lib/kafka/data
    restart: always


  kafka-map: 
    #image: dushixiang/kafka-map:latest
    image: docker.cnb.cool/srebro/docker-images/dushixiang-kafka-map:latest  #加速地址
    container_name: kafka-map
    networks:
      - srebro.cn
    volumes:
      - "/home/application/Middleware/kafka/kafka-map/data:/usr/local/kafka-map/data"  
    ports:
      - 19006:8080
    environment:
      DEFAULT_USERNAME: admin
      DEFAULT_PASSWORD: 123456
    depends_on:
      - kafka
    restart: 'unless-stopped'
  
  
networks:
  srebro.cn:
    external: true