当前位置:   article > 正文

Docker部署单节点Kafka_docker 部署 kafka 单节点

docker 部署 kafka 单节点

Docker部署单节点Kafka

参考镜像

wurstmeister/zookeeper Overview
docker pull wurstmeister/zookeeper
  • 1
wurstmeister/kafka Overview
docker pull wurstmeister/kafka
  • 1

部署单Broker

定义 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
kafka 环境变量:
  • KAFKA_ADVERTISED_HOST_NAME:
    你可以修改主机名来以匹配docker主机IP。注意:如果要运行多个Broker,请不要使用localhost或127.0.0.1作为主机ip
  • KAFKA_CREATE_TOPICS:
    kafka-docker在创建期间自动在kafka中创建主题,例如 test:1:1 表示主题test包含1个分区和1个副本。
  • KAFKA_ZOOKEEPER_CONNECT:
    现在是强制的环境变量,表示kafka的zookeeper connect string。
  • KAFKA_ADVERTISED_HOST_NAME:
    192.168.220.150,类似这种 hostName用ip的,一直出错,关键报错信息如下:

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
  • 1
  • 2

启动与停止命令

首先需要 cd 进入 docker-compose-single-broker.yml 所在目录:

启动命令:

docker-compose -f docker-compose-single-broker.yml up -d
  • 1

结尾不加 -d 会占用当前命令行窗口。因为按 Ctrl + C 会自动 stop 容器。

停止命令:

docker-compose -f docker-compose-single-broker.yml stop
  • 1

停止并删除容器命令:

docker-compose -f docker-compose-single-broker.yml down
  • 1

测试验证:

1、使用 docker ps -a 查看 zookeeper 和 kafka 容器是否已经正常运行:

2、进入 kafka 容器控制台:

docker exec -it app_kafka_1 bash
  • 1

3、进入 kafka 容器中的 bin 目录:

cd $KAFKA_HOME/bin
pwd
  • 1
  • 2

pwd 用来打印当前工作目录,方便我们确认是否切换成功

4、检查自动创建的主题 test:

kafka-topics.sh --zookeeper app_zookeeper_1:2181 --describe --topic test
  • 1

5、在一个cmd窗口发布消息:

kafka-console-producer.sh --topic=test --broker-list app_kafka_1:9092
  • 1

6、打开另一个cmd窗口,重复1-3步,订阅消息:

kafka-console-consumer.sh --bootstrap-server app_kafka_1:9092 --from-beginning --topic test
  • 1

参考文章
  • docker部署单节点kafka
https://www.cnblogs.com/kendoziyu/p/15129948.html
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/651926
推荐阅读
相关标签
  

闽ICP备14008679号