wurstmeister-kafka docker 101, 如何在docker安装Kafka
选择 image,Bitnami VS wurstmeister
目前有 2 个热门的 Kafka Image:
Bitnami/docker:bitnami/kafka - Docker Image | Docker Hub
wurstmeister/docker:wurstmeister/kafka - Docker Image | Docker Hub
这 2 个 image 在 docker hub 上都有很多下载量。我简单看了一下,Bitnami 属于 VMware。wurstmeister 目前在线上查不到身份,看 docker hub 的资料,仅属于 community member(普通社区成员),不是 VERIFIED PUBLISHER(bitnami 是)。而 wurst meister 在德语里的意思是“香肠师傅”,目前猜测是一位开源贡献者。
wurstmeister/docker 第一个版本发布于 2015 年,Bitnami/docker 第一个版本发布于 2017 年。可以看出 wurstmeister/docker 是比这家公司更早加入 Docker Hub。
从更新频率上来说,wurstmeister/docker基本上半年更一次。
Bitnami/docker 几天就一个版本。Bitnami官方也说了,使用Bitnami docker image的理由,第一个就是更紧密的跟随官方的更新节奏。
从以上可以看出,更加推荐大家使用 Bitnami/kafka。
wurstmeister 使用指南
1,去 docker hub 上搜索 docker,找到 wurstmeister/docker 的 docker hub 页面: https://hub.docker.com/r/wurstmeister/kafka ; 2,切换到 Tags 下,找到 pull 命令并运行:
$ docker pull wurstmeister/kafka:latest
3,找到 Github 上 wurstmeister/kafka repo,里面有 docker-compose.yaml 文件的例子: GitHub - wurstmeister/kafka-docker: Dockerfile for Apache Kafka
docker-compose.yaml 文件例子:kafka-docker/docker-compose-single-broker.yml at master · wurstmeister/kafka-docker · GitHub
4,修改 docker-compose.yaml 文件例子
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: 'wurstmeister/kafka:latest'
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_LISTENERS=PLAINTEXT://:9092
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_LOG_DIRS=/kafka/kafka-logs
depends_on:
- zookeeper
volumes:
- /var/run/docker.sock:/var/run/docker.sock
5,docker-compose -f [yaml文件名] up 运行起来之后,需要测试其 consumer 和 producer 是否正常运行:
a,打开一个新的 terminal(终端/命令行),进入容器内部
$ docker ps
CONTAINER ID IMAGE COMMAND ...
5ffdb676a525 wurstmeister/kafka:latest "start-kafka.sh" ...
$ docker exec -it [container id] /bin/bash
b,进入 docker script 目录
$ cd /opt/kafka/bin
c,创建一个新的 topic — client:
$ ./kafka-topics.sh --bootstrap-server kafka:9092 --create --topic client --partitions 1 --replication-factor 1
d,运行以下命令,列出所有的 topic,显示出我们刚才新建的 topic:client。:
$ ./kafka-topics.sh --bootstrap-server kafka:9092 --list
client
加入—describe参数,列出详情:
$ ./kafka-topics.sh --bootstrap-server kafka:9092 --topic client --describe
Topic: client TopicId: fAhj9Wt8QXu-dozhNxn3Fw PartitionCount: 1 ReplicationFactor: 1 ... ...
f,运行 console-producer 脚本,去给我们新建的 topic 发送消息:
$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic client
e,新建一个 terminal,运行 console-consumer,消费我们发送的消息:
$ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic client --from-beginning
g,这时我们在 console-producer terminal 输入的内容,会通过 producer 发送 Kafka 的 topic 里,最后送到 consumer,显示到 console-consumer terminal 里:
参考文献:
One to run them all - DEV Community 👩💻👨💻
The better development experience with Kafka | by Bluxmit | Geek Culture | Medium