docker安装kafka

北战南征 提交于 2020-04-03 17:58:21

前言

最近在用kafka做项目,所以本地搭建下kafka,但是又嫌java安装和安装kafka太麻烦,所以想到用docker来部署。

镜像

wurstmeister/kafka
维护较为频繁的一个Kafka镜像。只包含了Kafka,因此需要另行提供ZooKeeper,推荐使用同一作者提交的wurstmeister/zookeeper。
现在已经提供较新的1.1.0版本。

搭建开发环境

1 ZooKeeper &1 Kafka

这里以我自己最常用的wurstmeister/kafka为例,使用docker-compose运行一个只有一个ZooKeeper node和一个Kafka broker的开发环境:

docker-compose.yml

version: '2'

services:
  zoo1:
    image: wurstmeister/zookeeper
    restart: unless-stopped
    hostname: zoo1
    ports:
      - "2181:2181"
    container_name: zookeeper

  # kafka version: 1.1.0
  # scala version: 2.12
  kafka1:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
      KAFKA_BROKER_ID: 1
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_CREATE_TOPICS: "test1_topic,test2_topic"
    depends_on:
      - zoo1
    container_name: kafka

这里利用了wurstmeister/kafka提供的环境参数KAFKA_CREATE_TOPICS使Kafka运行后自动创建topics,当时你不修改kafka的配置(auto.create.topics.enable),扔到新的topic也会自动创建。

启动容器

在docker-compose.yml所在的目录执行以下命令:

docker-compose up -d

运行

docker ps -a

与容器内的开发环境交互

可以使用docker exec命令直接调用kafka容器内的脚本来进行创建/删除topic,启动console producer等等操作。
如果本地存有与容器内相同的Kafka版本文件,也可以直接使用本地脚本文件。如上述docker-compose.yml文件所示,kafka1的hostname即是kafka1,端口为9092,通过kafka1:9092就可以连接到容器内的Kafka服务。

列出所有topics (在本地kafka路径下)

$ bin/kafka-topics.sh --zookeeper localhost:2181 --list

列出所有Kafka brokers

$ docker exec zookeeper bin/zkCli.sh ls /brokers/ids

PHP 使用kafka 实践

golang 使用kafka 实践

参考文档

  1. https://www.jianshu.com/p/ac03f126980e
  2. https://www.jianshu.com/p/da54e9cee038
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!