第一步:使用下述命令从Docker Hub查找镜像,此处我们要选择的是zookeeper官网的镜像
docker search zookeeper
第二步:拉取zookeeper镜像
docker pull zookeeper:latest
第三步:启动zookeeper容器
docker run -d --name zookeeper -p 2181:2181 -t zookeeper:latest
第四步:拉取kafka镜像,此处选择的是 wurstmeister/kafka (这个镜像的受欢迎程度最高)
docker pull wurstmeister/kafka:latest
第五步:如果是在Windows系统中可以使用下述命令启动kafka容器
docker run -d --name kafka -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT=192.168.1.75:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.75:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" -e TZ="Asia/Shanghai" wurstmeister/kafka:latest
如果是在Linux中则可以使用下述命令启动kafka容器:
docker run -d --name kafka -p 9092:9092 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.1.75:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.75:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-e KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" \
-e TZ="Asia/Shanghai" \
wurstmeister/kafka:latest
二者的区别就是对于 “\” 符号的支持,其它的配置都一样。
KAFKA_ZOOKEEPER_CONNECT:配置zookeeper服务的地址
KAFKA_ADVERTISED_LISTENERS:zookeeper中存的地址是此处配置的,多个kafka注册到zookeeper就是把这个地址放到zookeeper中。
KAFKA_LISTENERS:内网部署的程序,读的地址是KAFKA_LISTENERS写的,配置0.0.0.0:9092,表示内网所有网卡都绑定9092
TZ:容器时区改为上海
如果当前服务参数需要调整,可以参考wurstmeister在github上的官网地址:
https://github.com/wurstmeister/kafka-docker
第六步:使用下述命令进入都kafka容器内部,然后进入到 /opt/kafka_2.13-2.8.1/bin 目录下
docker exec -it kafka bash
cd /opt/kafka_2.13-2.8.1/bin
可以看到这里有着许多和kafka操作命令相关的脚本文件。
第七步:使用下述命令创建一个单分区单副本的主题 “test123”,并且创建生产者生产消息
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test123
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test123
接着另起一个连接创建消费者接收消息:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test123 --from-beginning
如上图所示,当看到消费者获取到了生产者发送的消息则说明kafka服务启动成功。