docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
定义 docker-compose-single-broker.yml
:
version: '3.8'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
depends_on: [ zookeeper ]
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /usr/app/run/docker.sock:/var/run/docker.sock
Error while fetching metadata with correlation id xxx {test=LEADER_NOT_AVAILABLE}
修改为 KAFKA_ADVERTISED_HOST_NAME: kafka,验证可行!
kafka depends-on:
指定 zookeeper 在 kafka 前面启动。
kafka volumes 卷映射:
宿主机中的文件路径:容器中的文件路径,而我的宿主机是Linux主机。
参考自 Github kafka-docker
GitHub 上的文件 build: . 修改为 image: wurstmeister/kafka,修改前会出现以下错误:
failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount698554617/Dockerfile: no such file or directory
ERROR: Service 'kafka' failed to build : Build failed
首先需要 cd 进入 docker-compose-single-broker.yml 所在目录:
启动命令:
docker-compose -f docker-compose-single-broker.yml up -d
结尾不加 -d 会占用当前命令行窗口。因为按 Ctrl + C 会自动 stop 容器。
停止命令:
docker-compose -f docker-compose-single-broker.yml stop
停止并删除容器命令:
docker-compose -f docker-compose-single-broker.yml down
1、使用 docker ps -a
查看 zookeeper 和 kafka 容器是否已经正常运行:
2、进入 kafka 容器控制台:
docker exec -it app_kafka_1 bash
3、进入 kafka 容器中的 bin 目录:
cd $KAFKA_HOME/bin
pwd
pwd 用来打印当前工作目录,方便我们确认是否切换成功
4、检查自动创建的主题 test:
kafka-topics.sh --zookeeper app_zookeeper_1:2181 --describe --topic test
5、在一个cmd窗口发布消息:
kafka-console-producer.sh --topic=test --broker-list app_kafka_1:9092
6、打开另一个cmd窗口,重复1-3步,订阅消息:
kafka-console-consumer.sh --bootstrap-server app_kafka_1:9092 --from-beginning --topic test
https://www.cnblogs.com/kendoziyu/p/15129948.html