最流行的两个Kafka的Docker镜像为:
以下docker-compose.yaml
配置只适用于不需要安全控制和持久化数据的本地开发环境。
version: "3"
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'bitnami/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
depends_on:
- zookeeper
参见:
version: "3"
services:
zookeeper:
image: 'wurstmeister/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
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
depends_on:
- zookeeper
参见:
# 创建一个新目录名为`kafka`
# 选用上面某一个`docker-compose.yaml`
mkdir -p kafka
cd kafka
vim docker-compose.yaml
# start
docker-compose up -d
# stop
docker-compose stop
# check kafka containers
docker ps | grep kafka
# Create topic into `my-topic` topic
docker exec -it kafka_kafka_1 \
kafka-topics.sh --create --bootstrap-server kafka:9092 --topic my-topic
# Write events
docker exec -it kafka_kafka_1 \
kafka-console-producer.sh --bootstrap-server kafka:9092 --topic my-topic
# input message per each line, and press <enter> key
# press <ctrl> + <d> to complete writing messages and quit
# In a new terminal
# Read events from `my-topic` topic, and offset is from beginning
docker exec -it kafka_kafka_1 \
kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic my-topic --from-beginning
# watch consumer logs to check if receive messages
# press <ctrl> + <c> to quit
如果是想在Kubernetes或OpenShfit上运行Kafka,则建议用Kafka Operator方式。
参见: