Donnie

不积跬步无以至千里

使用docker安装kafka

一,下载镜像

    docker pull wurstmeister/zookeeper 
    docker pull wurstmeister/kafka

二, 运行镜像

  1. 运行zookeeper
    -d 后台运行
    --name: 服务名称叫zookeeper (很重要)
    -p :端口

    docker run -d --name zookeeper -p 2181 -t wurstmeister/zookeeper

  1. 运行zookeeper
    --name:服务名叫 kafka
    --publish:同-p 端口映射
    --link:可以用来链接2个容器,使得源容器和接收容器之间可以互相通信,如下面让kafka可以访问zookeeper容器
    --env :设置环境变量
    --volume:同-v,目录挂载
    docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 --volume /data/data/localtime:/etc/localtime wurstmeister/kafka:latest

三,进入容器

docker ps 是查看容器运行id,或容器名称


    docker ps 
    docker exec -it kafka /bin/bash

四,进入kafka默认目录

    cd /opt/kafka

五,创建主题

    bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic hikafka

注意在容器外面可以这么操作,如下:

    docker exec kafka /opt/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic hikafka

六,运行一个消生产者,指定topic为刚刚创建的主题

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hikafka

七,运行一个消费者,指定同样的主题

    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hikafka --from-beginning

注意新版本的kafka,消费不再使用--zookeeper zookeeper:2181

容器外:

    docker exec kafka /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hikafka --from-beginning

参考资料

https://johng.cn/install-kafka-with-docker/
https://stackoverflow.com/questions/45025329/consumer-connecting-to-zookeeper-not-broker-for-message-consumption
https://gist.github.com/abacaphiliac/f0553548f9c577214d16290c2e751071
https://www.jianshu.com/p/21d66ca6115e

赞赏支持