kafka依赖zookeeper,所以需要先安装zookeeper
-p:设置映射端口(默认2181)
-d:后台启动
1.拉取zookeeper并检查拉取是否成功
代码:
C:\Users\Administrator>docker pull wurstmeister/zookeeper
Using default tag: latest
latest: Pulling from wurstmeister/zookeeper
a3ed95caeb02: Pull complete
ef38b711a50f: Pull complete
e057c74597c7: Pull complete
666c214f6385: Pull complete
c3d6a96f1ffc: Pull complete
3fe26a83e0ca: Pull complete
3d3a7dd3a3b1: Pull complete
f8cc938abe5f: Pull complete
9978b75f7a58: Pull complete
4d4dbcc8f8cc: Pull complete
8b130a9baa49: Pull complete
6b9611650a73: Pull complete
5df5aac51927: Pull complete
76eea4448d9b: Pull complete
8b66990876c6: Pull complete
f0dd38204b6f: Pull complete
Digest: sha256:7a7fd44a72104bfbd24a77844bad5fabc86485b036f988ea927d1780782a6680
Status: Downloaded newer image for wurstmeister/zookeeper:latest
docker.io/wurstmeister/zookeeper:latest
C:\Users\Administrator>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wurstmeister/zookeeper latest 3f43f72cb283 5 years ago 510MB
默认拉取最新得版本,如需安装指定版本可在拉取镜像时候指明(:xx)xx表示版本
2.安装zookeeper并检查是否创建容器成功
C:\Users\Administrator>docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
7e6ead72f0b2e552d162a487595c2577b9684ffa6154e86808c5d878754b0ff6
C:\Users\Administrator>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e6ead72f0b2 wurstmeister/zookeeper "/bin/sh -c '/usr/sb…" 42 seconds ago Up 40 seconds 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp zookeeper
命令会启动一个名为“zookeeper”的Docker容器,并且映射它的2181端口到你的机器的2181端口
3.拉取kafka镜像
C:\Users\Administrator>docker pull wurstmeister/kafka
Using default tag: latest
latest: Pulling from wurstmeister/kafka
540db60ca938: Pull complete
f0698009749d: Pull complete
d67ee08425e3: Pull complete
1a56bfced4ac: Pull complete
dccb9e5a402a: Pull complete
Digest: sha256:4916aa312512d255a6d82bed2dc5fbee29df717fd9efbdfd673fc81c6ce03a5f
Status: Downloaded newer image for wurstmeister/kafka:latest
docker.io/wurstmeister/kafka:latest
C:\Users\Administrator>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wurstmeister/kafka latest 2dd91ce2efe1 2 years ago 508MB
4.创建kafka容器(我使用得是windows,换行符为“^”,Linux 系统将“^”改成“\”)
docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper ^
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 ^
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 ^
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 ^
--env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka
查看结果并检查创建情况
C:\Users\Administrator>docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper ^
More? --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 ^
More? --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 ^
More? --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 ^
More? --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka
77e7b19dfe2da59681bffc99af8605b401f967a6fcae45065b87893738ce4f58
C:\Users\Administrator>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77e7b19dfe2d wurstmeister/kafka "start-kafka.sh" 2 minutes ago Up 2 minutes 0.0.0.0:9092->9092/tcp kafka
7e6ead72f0b2 wurstmeister/zookeeper "/bin/sh -c '/usr/sb…" 15 minutes ago Up 15 minutes 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp zookeeper
参数说明
--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容器有一个不同的名字或者你使用的是不同的网络设置,你需要相应地调整
--link
和KAFKA_ZOOKEEPER_CONNECT
的值
5.验证Kafka是否正常运行
出现如下输入终端就是启动成功
C:\Users\Administrator>docker exec -it kafka /bin/bash
bash-5.1#
6.创建测试主题
在Kafka容器中,运行以下命令创建一个测试主题:
bash-5.1# kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181
Created topic test.
7.执行创建生产者 和消费着
然后输入一些消息(比如输入Hello Kafka 按下enter)
在另一个终端窗口中,创建一个消费者来读取测试主题的消息(也需要进入kafka容器哈),执行创建消费者
生产者(终端):
输入:Hello Kafka
bash-5.1# kafka-console-producer.sh --broker-list localhost:9092 --topic test
>Hello Kafka
消费者(终端):
如果设置正确,你就能在消费者终端中看到你在生产者终端输入"Hello Kafka"
C:\Users\Administrator>docker exec -it kafka /bin/bash
bash-5.1# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Hello Kafka