1、docker直接拉取kafka和zookeeper的镜像
docker pull wurstmeister/kafka
docker pull wurstmeister/zookeeper
2、首先需要启动zookeeper,如果不先启动,启动kafka没有地方注册消息
10.10.0.67内网ipdocker run -it --name zookeeper -p 9140:2181 -d wurstmeister/zookeeper:latest# 启动kafka容器,注意需要启动三台,注意端口的映射,都是映射到9092
# 第一台
docker run -it --name kafka01 -p 9141:9092 -d -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=10.10.0.67:9140 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.10.0.67:9141 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
# 第二台
docker run -it --name kafka02 -p 9142:9092 -d -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=10.10.0.67:9140 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.10.0.67:9142 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest
# 第三台
docker run -it --name kafka03 -p 9143:9092 -d -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=10.10.0.67:9140 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.10.0.67:9143 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:latest具体命令
随意进入一个容器
下面都是是cd /opt/kafka_2.13-2.8.1/bin运行
cd /opt/kafka_2.13-2.8.1/bin# 创建topic名称为first,3个分区,1个副本
./kafka-topics.sh --zookeeper 10.10.0.67:9140 --create --topic first --replication-factor 1 --partitions 3# 查看first此topic信息
./kafka-topics.sh --zookeeper 10.10.0.67:9140 --describe --topic first# 调用生产者生产消息
./kafka-console-producer.sh --broker-list 10.10.0.67:9141,10.10.0.67:9142,10.10.0.67:9143 --topic first# 调用消费者消费消息,from-beginning表示读取全部的消息
./kafka-console-consumer.sh --bootstrap-server 10.10.0.67:9141,10.10.0.67:9142,10.10.0.67:9143 --topic first --from-beginning删除topic
软删除
具体命令./kafka-topic.sh --zookeeper 10.10.0.67:9140 --delete --topic second
真删除
运行后可以看到删除的时候只是被标记为删除marked for deletion并没有真正的删除,如果需要真正的删除,需要再config/server.properties中设置delete.topic.enable=true修改分区数
./kafka-topics.sh --zookeeper 10.10.0.67:9140 --alter --topic test2 --partitions 3
生产者截图
消费者截图