【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,并进行基本验证的过程。

相关推荐
java_logo11 分钟前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
生活爱好者!13 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
java_logo14 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
MC皮蛋侠客14 小时前
uv 系列(七):CI/CD、Docker 与私有索引——生产级交付
python·ci/cd·docker·uv
Hui Baby14 小时前
K8S使用CRD和控制器简单应用
云原生·容器·kubernetes
用户2333768521817 小时前
Docker 端口"时通时不通"的排查实战
docker
做个文艺程序员17 小时前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器
ShiXZ21317 小时前
Redis docker-compose 部署指南
redis·docker·eureka
AI人工智能+电脑小能手18 小时前
【大白话说Java面试题 第188题】【08_Kafka篇】第4题:Kafka 大量消息积压时该如何处理?
java·性能优化·kafka·故障排查·消息积压
富士康质检员张全蛋18 小时前
Kafka的操作 消费者组 消费位置查看
分布式·kafka