目录
前提条件
-
安装Docker: 确保你已经在你的Windows机器上安装了Docker。你可以从Docker官方网站下载并安装Docker Desktop。
-
启动Docker: 确保Docker正在运行。
-
安装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容器有一个不同的名字或者你使用的是不同的网络设置,你需要相应地调整--link
和KAFKA_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,并进行基本验证的过程。