docker启动kafka

记录下自己的操作,避免下次用的时候又去踩坑

kafka需要zookeeper管理,所以需要先安装zookeeper。

下载wurstmeister/zk和kafka

docker pull wurstmeister/zookeeper

docker pull wurstmeister/kafka

启动zk

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

图1

进入zk容器

docker exec -it zookeeper /bin/sh

图2

这时查看zk节点只有一个zookeeper


图3

插播一条快捷键

docker退出当前容器 快捷键:

  • 先按,ctrl+p

  • 再按,ctrl+q

启动kafka

  1. docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=本机ip:2181 --env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka

第一次尝试启动容器是用的第一种方式,后面发现在容器外面连接不了kafka,可能是因为生成的kafka地址是容器内地址。所以换了第二种方式启动。

图4

  1. docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=本机ip:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://本机ip:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
    image.png

进入kafka容器测试消息

  • 进入容器:docker exec -it {container id} /bin/bash

  • 进入到opt/kafka_2.13-2.7.0/bin

  • 创建主题:./kafka-console-producer.sh --broker-list localhost:9092 --topic {topicName},然后发送消息

{"datas":[{"name":"jianshu","value":"10"}],"ver":"1.0"}

  • 运行consumer查看是否有消息:kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic {topicName} --from-beginning
图5
图6
图7

进入zk容器查看节点信息

发现和图3相比 创建了很多关于kafka的节点

image.png

我们可以看到我们创建的主题及其信息


docker启动kafka_第1张图片
image.png

你可能感兴趣的:(docker启动kafka)