Docker Compose 单节点 Kafka
介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序的服务、网络和卷等。在这篇文章中,我们将介绍如何使用 Docker Compose 来部署单节点的 Kafka。
Kafka 是一个分布式流处理平台,用于构建高吞吐量、可扩展、容错的实时数据流应用程序。它使用多个分区和多个副本来实现数据的持久化和可靠性。Docker Compose 可以方便地部署和管理 Kafka 服务,使得我们可以快速搭建开发和测试环境。
准备工作
在开始之前,确保已经安装了 Docker 和 Docker Compose。可以通过以下命令来检查是否安装成功:
docker --version
docker-compose --version
如果输出了对应的版本号,则说明安装成功。
编写 Docker Compose 文件
下面是一个简单的 Docker Compose 文件示例,用于部署单节点的 Kafka 服务:
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
networks:
- kafka-network
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
networks:
- kafka-network
networks:
kafka-network:
driver: bridge
以上文件定义了两个服务:zookeeper 和 kafka。zookeeper 是 Kafka 的依赖服务,用于保存 Kafka 的元数据和状态信息。kafka 是 Kafka 服务本身。
在这个文件中,我们使用了 wurstmeister 提供的 Kafka 和 ZooKeeper 的镜像。我们将 ZooKeeper 的 2181 端口映射到宿主机的 2181 端口,将 Kafka 的 9092 端口映射到宿主机的 9092 端口。我们还定义了一个自定义网络 kafka-network,用于连接 zookeeper 和 kafka 服务。
启动 Kafka 服务
在终端中,进入到包含 Docker Compose 文件的目录,执行以下命令启动 Kafka 服务:
docker-compose up -d
这个命令将会启动 Kafka 服务,并在后台运行。可以使用以下命令来查看服务状态:
docker-compose ps
如果一切正常,应该会看到如下输出:
Name Command State Ports
-------------------------------------------------------------------------------------------------------------
kafka-compose_kafka_1 start-kafka.sh Up 0.0.0.0:9092->9092/tcp
kafka-compose_zookeeper_1 /bin/sh -c /usr/sbi ... Up 0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp
测试 Kafka 服务
要测试 Kafka 服务是否正常工作,可以使用 Kafka 的命令行工具来创建一个主题,并发送和接收消息。
首先,进入到 Kafka 容器:
docker exec -it kafka-compose_kafka_1 /bin/bash
然后,使用以下命令创建一个名为 test 的主题:
kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
接下来,可以使用以下命令来发送消息:
echo "Hello, Kafka!" | kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
最后,使用以下命令来接收消息:
kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
如果一切正常,应该能够看到刚刚发送的消息:
Hello, Kafka!
停止和清理
要停止 Kafka 服务,可以使用以下命令:
docker-compose down
这个命令将会停止并删除 Kafka 容器和相关的网络和卷。
总结
本文介绍了如何使用 Docker Compose 部署单节点的 Kafka