在本文中,介绍了利用Docker安装Kafka的基础环境要求; 利用Docker安装zookeeper过程; 利用Docker安装Kafka过程;进入容器配置生产者和消费者过程; 演示生产者和消费者通讯; 故障排查方法。
提前准备一台安装Linux系统的主机或虚拟机,我这里安装的是Ubuntu 22.04.3 LTS版本。
登录到Linux系统输入:docker -v 命令, 如果出现:
Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1
类似于这样的提示信息,说明Docker已安装,如果没有,请输入以下命令安装Docker:
- $ sudo apt update
- $ sudo apt install docker.io
在命令行直接输入以下命令,docker会自动拉取对应镜像:
# docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
拉取过程如图:
在命令行直接输入以下命令,docker会自动拉取对应镜像:
# 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
注意, 我的服务器IP是192.168.201.206,所以上面的IP要根据自己的实际情况进行变更,我变更后的命令如下:
# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.201.206:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.201.206:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
拉取过程如图:
Kafka安装完毕后,还要进入到容器中启动生产者和消费者,这样可以验证kafka功能是否正常,顺序执行命令如下:
- # docker ps -a #查看kafka镜像的容器ID
- # docker exec -it 容器ID /bin/sh #进入到容器内部
- # cd /opt/kafka/bin # 切到容器内部kafka执行目录下
执行最后的结果如图:
在容器里执行以下命令启动生产者:
./kafka-console-producer.sh --broker-list localhost:9092 --topic [你的topic名称]
我这里自己起了一个topic名称,名字为test123, 如图:
产生者脚本启动成功后,会有一个">"提示符。
为了看到生产者和消费者之间的消息传递效果,这里需要另开一个终端,按照上面的方法进入容器对应目录,并执行以下命令:
./kafka-console-consumer.sh --bootstrap-server [你的IP地址]:9092 --topic [你的topic名称]
注意,这里有两个变量需要自己调整,一个是IP地址,另一个是上面建立的Topic名称, 我这里填入信息后的完整命令如下:
./kafka-console-consumer.sh --bootstrap-server 192.168.201.206:9092 --topic test123
执行过程如图:
切换到生产者窗口,连续输入一些信息,如图:
再切换回消费者窗口, 正常的话已经可以收到生产者发送的信息了,如图:
如果在使用Docker过程中遇到任何错误, 可以命令:
docker logs 容器ID
通过查看容器日志进行故障排查,过程如图: