1、编写 docker-compose.yaml 配置文件

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    expose:
      - "9999"
    ports:
      - "9092:9092"
      - "9999:9999"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 172.16.0.252
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_BROKER_ID: 0
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.0.252:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
      KAFKA_LOG_DIRS: "/kafka/logs"
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: true
      KAFKA_DELETE_TOPIC_ENABLE: true
      JMX_PORT: 9999  #启用远程JMX 监控面板用
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /data/kafka/logs:/kafka/logs

环境变量说明:

# client 要访问的 broker 地址
KAFKA_ADVERTISED_HOST_NAME: 172.16.0.252

# 通过端口连接 zookeeper
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

# 每个容器就是一个 broker,设置其对应的 ID
KAFKA_BROKER_ID: 0

# 外部网络只能获取到容器名称,在内外网络隔离情况下
# 通过名称是无法成功访问 kafka 的
# 因此需要通过绑定这个监听器能够让外部获取到的是 IP
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.16.0.252:9092

# kafka 监听器,告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092

# Kafka默认使用-Xmx1G -Xms1G的JVM内存配置,由于服务器小,调整下启动配置
# 这个看自己的现状做调整,如果资源充足,可以不用配置这个
KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"

# 设置 kafka 日志位置
KAFKA_LOG_DIRS: "/kafka/logs"

# kafka 自动创建 topic,对于生成者与消费者连接的 TOPIC 不存在自动创建
KAFKA_AUTO_CREATE_TOPICS_ENABLE: true

# kafka 开启删除 topic,开了自动创建,删除的也要开,否则删除后还会自动创建
KAFKA_DELETE_TOPIC_ENABLE: true

2、管理面板安装

下载镜像:

docker pull provectuslabs/kafka-ui:latest

运行容器

docker run --name=kafka-ui -d \
-e KAFKA_CLUSTERS_0_NAME=local-kafka \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=172.16.0.252:9092 -p 8888:8080 \
provectuslabs/kafka-ui:latest
作者:admin  创建时间:2023-03-05 18:04
最后编辑:admin  更新时间:2023-03-05 18:15