DOCKER 部署kafka

因为kafka与Zookeeper之间是强关联,所以安装kafka之前需要先安装Zookeeper

拉取zookeeper镜像

docker pull wurstmeister/zookeeper

运行ZooKeeper容器

docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper

接下来,你需要运行Kafka的Docker容器,并且配置它连接到你刚刚启动的ZooKeeper实例

拉取kafka镜像

docker pull bitnami/kafka

确保在运行这个命令之前ZooKeeper容器已经在运行,并且可以通过zookeeper:2181来访问。如果你的ZooKeeper容器有一个不同的名字或者你使用的是不同的网络设置,你需要相应地调整--link和KAFKA_ZOOKEEPER_CONNECT的值

运行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 bitnami/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的副本因子。
bitnami/kafka: 使用的Docker镜像名字。

进入容器

docker exec -it kafka /bin/bash

创建测试主题

kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181

执行创建生产者命令

kafka-console-producer.sh --broker-list localhost:9092 --topic test

在另一个终端窗口中,创建一个消费者来读取测试主题的消息(也需要进入kafka容器哈),执行创建消费者命令

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

如果一切设置正确,你应该能在消费者终端中看到你在生产者终端输入的消息。