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

相关推荐
mengao12348 分钟前
centos 服务器 docker 使用代理
服务器·docker·centos
Eternal-Student14 分钟前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
不是二师兄的八戒17 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
码农小丘23 分钟前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
我一直在流浪24 分钟前
Kafka - 消费者程序仅消费一半分区消息的问题
分布式·kafka
Eternal-Student1 小时前
【1.2 Getting Started--->Installation Guide】
docker
灼烧的疯狂2 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
B站计算机毕业设计超人2 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
wenyue11213 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
yunfanleo3 小时前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker