• docker install kafka


    1. 环境使用

    docker run -d --name zookeeperau \
    -p 2181:2181 \
    -v /docker/volumes/zookeeper/data:/data \
    -v /docker/volumes/zookeeper/datalog:/datalog \
    -v /docker/volumes/zookeeper/logs:/logs \
    -v /etc/localtime:/etc/localtime \
    wurstmeister/zookeeper:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参数说明#
    -p 26313:2181 zk的2181端口映射为26313端口
    -v /etc/localtime:/etc/localtime 容器时间同步主机时间 , 其他-v为把 /data /datalog /logs 映射到主机对应的目录

    2. 安装kafka

    docker run -d --restart=always  --name kafkaau \
    -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.2.103:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.103:9092 \
    -v /etc/localtime:/etc/localtime \
    bitnami/kafka:2.6.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    参数说明#
    -p 21661:9092 kafka的 9092 端口映射为 21661 端口
    -e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka用BROKER_ID来区分自己 , 如需配置kafka集群可 修改此id 和 上述 21661 端口号映射即可部署集群
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.100.21:26313 配置zookeeper连接地址
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.21:21661 把kafka的地址注册给zookeeper,如果是远程访问要改成外网IP,否则可能出现无法连接
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
    -v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

    3. Topic CRUD

    READ

    bin/kafka-topics.sh --list --zookeeper [ZKHOST]:2181
    
    • 1

    READ INFO

    CREATE

    bin/kafka-topics.sh --create --zookeeper [ZKHOST]:2181 [TNAME] --partitions [INT] --replication-factor [INT]
    
    bin/kafka-topics.sh --create --zookeeper hadoop103:2181 [TNAME] --partitions 2 --replication-factor 0
    
    • 1
    • 2
    • 3

    UPDATE x

    DELETE

    4. 消息发送 / 消费 测试#

    4.1 进入kafka容器#

    $ docker exec -it kafka bash
    
    • 1

    4.2 进入 bin 目录#

    $ cd /opt/kafka/bin
    
    • 1

    4.3 发送消息#

    > ./kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
    
    • 1

    4.4 消费消息#

    ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
    
    • 1

    daemon 自退问题

    #使用镜像 centos:latest 以后台模式启动一个容器 docker run -d centos

    问题:然后 docker ps -a 进行查看, 会发现容器已经退出

    很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。 这个是docker的机制问题,

    比如你的 web 容器,我们以 nginx 为例,正常情况下,我们配置启动服务只需要启动响应的 service 即可。例如 service nginx start 但是,这样做, nginx 为后台进程模式运行,就导致 docker 前台没有运行的应用,这样的容器后台启动后,会立即自杀因为他觉得他没事可做了.

    所以,最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断,O(∩_∩)O哈哈~

  • 相关阅读:
    Linux搭建Zookeeper伪集群详解
    算法设计 (分治法应用实验报告)基于分治法的合并排序、快速排序、最近对问题
    django 项目基本配置
    list去重和list倒叙
    使用openai-whisper实现语音转文字
    5年时间,从外包测试到自研,最后到阿里,这5年的经历只有自己能知道....
    iptables(4)规则匹配条件
    需求解析思路
    解决Oracle锁表的方法
    1.网络IO与select学习
  • 原文地址:https://blog.csdn.net/Enchanter06/article/details/126246687