因为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
如果一切设置正确,你应该能在消费者终端中看到你在生产者终端输入的消息。