【Docker】手把手教你使用Docker搭建kafka【详细教程】

目录

前提条件

1.安装Zookeeper

1.1运行ZooKeeper容器

2.运行Kafka容器

2.1启动Kafka容器

3.验证

3.1进入Kafka容器

3.2查看容器状态

3.3查看容器日志

3.4重新启动容器

3.5创建测试主题


前提条件

  1. 安装Docker: 确保你已经在你的Windows机器上安装了Docker。你可以从Docker官方网站下载并安装Docker Desktop。

  2. 启动Docker: 确保Docker正在运行。

  3. 安装docker的教程:window11安装docker小白教程_win11安装docker-CSDN博客

安装kafka之前需要先安装Zookeeper,

1.安装Zookeeper

docker pull wurstmeister/zookeeper

1.1运行ZooKeeper容器

使用以下命令运行一个ZooKeeper的Docker容器:

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

这个命令会启动一个名为"zookeeper"的Docker容器,并且映射它的2181端口到你的机器的2181端口。

2.运行Kafka容器

接下来,你需要运行Kafka的Docker容器,并且配置它连接到你刚刚启动的ZooKeeper实例。如果你还没有Kafka的Docker镜像,你可以使用如下命令拉取:

docker pull wurstmeister/kafka

2.1启动Kafka容器

docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka

这里,我们链接了ZooKeeper容器,并且设置了几个环境变量来配置Kafka。

在这个命令中:

  • --name kafka: 设置容器的名字为"kafka"。

  • -p 9092:9092: 将容器的9092端口映射到宿主机的9092端口。

  • --link zookeeper:zookeeper: 连接到名为"zookeeper"的另一个Docker容器,并且在当前的容器中可以通过zookeeper这个别名来访问它。

  • --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181: 设置环境变量,指定ZooKeeper的连接字符串。

  • --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092: 设置环境变量,指定Kafka的advertised listeners。

  • --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 设置环境变量,指定Kafka的listeners。

  • --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1: 设置环境变量,指定offsets topic的副本因子。

  • wurstmeister/kafka: 使用的Docker镜像名字。

确保在运行这个命令之前ZooKeeper容器已经在运行,并且可以通过zookeeper:2181来访问。如果你的ZooKeeper容器有一个不同的名字或者你使用的是不同的网络设置,你需要相应地调整--linkKAFKA_ZOOKEEPER_CONNECT的值。

3.验证

为了验证Kafka是否正常运行,你可以进入Kafka容器并使用Kafka的命令行工具。例如:

3.1进入Kafka容器

docker exec -it kafka /bin/bash

注意:可能出现报错:Error response from daemon: Container 62b9c056c0aa9d6ba917690abae1c6fe16c750a96fe428cdaa43f4c692a146ca is not running

说明kafka并没有运行。

如何解决呢?

3.2查看容器状态

首先,你可以使用以下命令查看所有Docker容器的状态,确认容器是否确实停止了:

docker ps -a

在列表中找到你的容器(在这个例子中是名为zookeeper或者kafka的容器),查看它的"STATUS"字段。如果容器已经停止,状态会显示为"Exited"。

3.3查看容器日志

为了找出为什么容器停止运行,你可以查看容器的日志:

docker logs 62b9c056c0aa

(这里的62b9c056c0aa是你容器的ID的前几个字符,你可以从docker ps -a的输出中找到完整的容器ID。)

查看日志输出,尤其是末尾的部分,通常可以找到导致容器停止的错误信息或者提示。

3.4重新启动容器

如果你找到了导致问题的原因,并且已经解决了,你可以尝试重新启动容器:

docker start 62b9c056c0aa

3.5创建测试主题

在Kafka容器中,运行以下命令创建一个测试主题:

kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181

在另一个终端窗口中,打开一个消费者来读取测试主题的消息(也需要进入kafka容器哈):

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

然后你可以输入一些消息(比如输入hell按下enter)。

如果一切设置正确,你应该能在消费者终端中看到你在生产者终端输入的消息。

这就完成了使用Docker运行ZooKeeper和Kafka,并进行基本验证的过程。

相关推荐
追风林2 分钟前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘1 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
全能全知者2 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器
阿尔帕兹4 小时前
构建 HTTP 服务端与 Docker 镜像:从开发到测试
网络协议·http·docker
杨荧5 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
ZHOU西口6 小时前
微服务实战系列之玩转Docker(十八)
分布式·docker·云原生·架构·数据安全·etcd·rbac
zmd-zk6 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶6 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
筱源源6 小时前
Kafka-linux环境部署
linux·kafka