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

相关推荐
aherhuo9 分钟前
kubevirt网络
linux·云原生·容器·kubernetes
陌北v122 分钟前
Docker Compose 配置指南
运维·docker·容器·docker-compose
catoop1 小时前
K8s 无头服务(Headless Service)
云原生·容器·kubernetes
阿里嘎多学长1 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
明 庭1 小时前
Ubuntu下通过Docker部署Caddy服务器
服务器·ubuntu·docker
G_whang3 小时前
windos 安装docker
运维·docker·容器
qq_5470261793 小时前
Kafka 常见问题
kafka
core5123 小时前
flink sink kafka
flink·kafka·sink
Mitch3113 小时前
【漏洞复现】CVE-2021-45788 SQL Injection
sql·web安全·docker·prometheus·metersphere
运维小文3 小时前
K8S中的PV、PVC介绍和使用
docker·云原生·容器·kubernetes·存储