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

914 阅读1分钟

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命令介绍)