1,下载镜像
首先我们分别执行如下两个命令将 wurstmeister/zookeeper 和 wurstmeister/kafka 这两个镜像下载下来。
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
2,启动容器
(1)执行如下命令启动 ZooKeeper 容器:
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
(2)接着执行如下命令启动 Kafka 容器:
注意:192.168.60.133 改为实际宿主机器的 IP 地址,如果不这么设置,可能会导致在别的机器上访问不到 kafka。
docker run -d --name kafka -p 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=192.168.60.133:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.60.133 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka
二、执行命令p
1,进入容器
(1)容器启动后执行如下命令进入 kafka 容器:
docker exec -it kafka /bin/bash
(2)如果要执行命令我们可以入 kafka 默认目录 /opt/kafka 后执行,也可以像下面一样在容器外面通过 docker exec 命令执行。
2,创建查看 Topic
(1)我们执行如下命令可以创建一个名为 test 的 Topic,该 Topic 包含一个分区和一个 Replica。
docker exec kafka kafka-topics.sh --create --zookeeper 192.168.60.133:2181 --replication-factor 1 --partitions 1 --topic test
(2)创建后可以执行如下命令查看当前的 Topics:
docker exec kafka kafka-topics.sh --list --zookeeper 192.168.60.133:2181
3,创建消息
注意:如果事先没有使用 kafka-topics 命令来手工创建 Topic,直接使用下面的内容进行消息创建时也会自动创建 Topics。
(1)首先创建消息生产者。执行如下命令启动 Kafka 基于命令行的消息生产客户端,启动后可以直接在控制台中输入消息来发送,控制台中的每一行数据都会被视为一条消息来发送。
注意:此时我们可以尝试输入几行消息,由于此时并没有消费者,所以这些输入的消息都会被阻塞在名为 test 的 Topics 中,直到有消费者将其消费掉。
docker exec -it kafka kafka-console-producer.sh --broker-list 192.168.60.133:9092 --topic test
(2)接着创建消息消费者。我们打开另一个命令窗口执行如下执行命令启动 Kafka 基于命令行的消息消费客户端,启动之后,马上可以在控制台中看到输出了之前我们在消息生产客户端中发送的消息。
docker exec -it kafka kafka-console-consumer.sh --bootstrap-server 192.168.60.133:9092 --topic test --from-beginning