Docker安装Kafka——基于docker-compose工具

1. 编写docker-compose文件

zookeeper的docker-compose.yml

version: '3.7'

services:
  zookeeper:
    image: zookeeper:3.4.14
    container_name: zookeeper_3.4.14
    ports: 
      - "2181:2181"
    volumes:
      - /data/zookeeper/logs:/datalog
      - /data/zookeeper/data:/data

kafka的docker-compose.yml

version: '3.7'

services:
  kafka:
    image: wurstmeister/kafka:0.10.2.0
    container_name: kafka_0.10.2.0
    ports: 
      - "9092:9092"
    restart: "no"
    network_mode: "host"
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/kafka/logs:/kafka/logs
    environment:
      - KAFKA_ADVERTISED_HOST_NAME=127.0.0.1
      - KAFKA_ZOOKEEPER_CONNECT=127.0.0.1:2181
      - KAFKA_BROKER_ID=0
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
      - KAFKA_LISTENERS=PLAINTEXT://127.0.0.1:9092
      - KAFKA_HEAP_OPTS=-Xms128m -Xmx256m
      - KAFKA_LOG_DIRS=/kafka/logs

2. 启动容器

docker-compose up -d

附1 kafka环境变量说明

# client 要访问的 broker 地址
KAFKA_ADVERTISED_HOST_NAME: 118.25.215.105
# 通过端口连接 zookeeper
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
# 每个容器就是一个 broker,设置其对应的 ID
KAFKA_BROKER_ID: 0
# 外部网络只能获取到容器名称,在内外网络隔离情况下
# 通过名称是无法成功访问 kafka 的
# 因此需要通过绑定这个监听器能够让外部获取到的是 IP 
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://118.25.215.105: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-compose安装和命令介绍

CentOS7安装docker-compose(附docker-compose命令介绍)

posted @ 2022-03-11 17:26  MrDarren  阅读(347)  评论(0编辑  收藏  举报