原创 标题:  Linux下Docker安装Kafka

Docker安装Kafka

前提条件,Linux服务器已安装docker。并且已经安装Zookeeper并启动。

下载Kafka镜像

Kafka目前没有官方镜像,本教程采用wurstmeister/kafka镜像来安装。下载kafka镜像命令:

docker pull wurstmeister/kafka

启动kafka

docker run  -d --name kafka -p9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.1:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.18.0.1:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

主要设置了4个参数,中间两个参数的127.0.0.1改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。

通过docker ps可以看到kafka已经成功启动,同时可以通过:

docker logs -f kafka

来查看docker的启动情况。

测试kafka

进入kafka容器的命令行

docker exec -ti kafka /bin/bash

进入kafka所在目录

cd opt/kafka_2.12-1.1.0/

创建一个主题:

## 如果Zookeeper和kafka在一个容器中启动
bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mykafka

## 如果Zookeeper单独启动,需指定内网地址
bin/kafka-topics.sh --create --zookeeper 172.18.0.1:2181 --replication-factor 1 --partitions 1 --topic mykafka

## 执行结果
Created topic "mykafka".

查看新创建的topic:

bin/kafka-topics.sh --zookeeper 172.18.0.1:2181 --describe --topic mykafka
## 结果
Topic:mykafka    PartitionCount:1    ReplicationFactor:1    Configs:
    Topic: mykafka    Partition: 0    Leader: 0    Replicas: 0    Isr: 0

运行一个消息生产者,指定topic为刚刚创建的主题,执行命令后并输入发布消息的内容(^C退出):

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

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

## Zookeeper配置同上
bin/kafka-console-consumer.sh --zookeeper zookeeper:2181 --topic mykafka --from-beginning

bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic mykafka

## 执行结果,正是在生产者输入的消息内容
a
exit

小结

至此完成kafka单机版本的部署和测试。

END
朱智胜的个人博客-微信公众号