kafka的Docker镜像使用说明(wurstmeister/kafka)

提醒

在hub.docker.com网站上,Star最多的kafka镜像是wurstmeister/kafka,今天一起来实践这个镜像,使用此镜像搭建kafka环境,并且生产和消费消息;
https://developer.aliyun.com/article/988818

实战环境

操作系统:CentOS7
Docker:24.0.2
docker-compose:v2.18.1

编写docker-compose.yml

version: "3"

# 通用配置
x-common-config: &common-config
  KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  KAFKA_NUM_PARTITIONS: 3
  KAFKA_DEFAULT_REPLICATION_FACTOR: 2

# kafka镜像通用配置
x-kafka: &kafka
  image: wurstmeister/kafka
  networks:
    net:
  depends_on:
    - zookeeper

services:

  zookeeper:
    container_name: zookeeper
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
      - net
    volumes:
      - zookeeper_data:/wurstmeister/zookeeper

  kafka-0:
    container_name: kafka-0
    <<: *kafka
    ports:
      - "9093:9093"
    environment:
      <<: *common-config
      KAFKA_BROKER_ID: 0
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://114.115.166.169:9093
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
    volumes:
      - kafka_0_data:/wurstmeister/kafka

  kafka-1:
    container_name: kafka-1
    <<: *kafka
    ports:
      - "9094:9094"
    environment:
      <<: *common-config
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://114.115.166.169:9094
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
    volumes:
      - kafka_1_data:/wurstmeister/kafka

  kafka-2:
    container_name: kafka-2
    <<: *kafka
    ports:
      - "9095:9095"
    environment:
      <<: *common-config
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://114.115.166.169:9095
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9095
    volumes:
      - kafka_2_data:/wurstmeister/kafka

volumes:
  zookeeper_data:
  kafka_0_data:
  kafka_1_data:
  kafka_2_data:


networks:
  net:

启动server

在docker-compose.yml所在的文件夹下,执行命令docker compose up -d,会先下载zookeeper和kafka的镜像,然后创建容器;
执行命令docker compose ps,可见启动了一个zookeeper和三个kafka容器:

[root@hecs-334217 kafka-compose]# docker compose ps
NAME                IMAGE                    COMMAND                  SERVICE             CREATED             STATUS              PORTS
kafka-0             wurstmeister/kafka       "start-kafka.sh"         kafka-0             28 minutes ago      Up 28 minutes       0.0.0.0:9093->9093/tcp, :::9093->9093/tcp
kafka-1             wurstmeister/kafka       "start-kafka.sh"         kafka-1             28 minutes ago      Up 28 minutes       0.0.0.0:9094->9094/tcp, :::9094->9094/tcp
kafka-2             wurstmeister/kafka       "start-kafka.sh"         kafka-2             28 minutes ago      Up 28 minutes       0.0.0.0:9095->9095/tcp, :::9095->9095/tcp
zookeeper           wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   zookeeper           28 minutes ago      Up 28 minutes       22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp

查看版本号

执行以下命令查看容器中的kafka版本号:

[root@hecs-334217 kafka-compose]# docker exec kafka-0 find / -name \*kafka_\* | head -1 
| grep -o '\kafka[^\n]*'
kafka_2.13-2.8.1

上述命令执行后,我这边控制台显示kafka_2.11-0.11.0.3,这表示Scala 的版本为2.11,kafka的版本是0.11.0.3;
执行以下命令查看zookeeper版本:

[root@hecs-334217 kafka-compose]# docker exec zookeeper pwd
/opt/zookeeper-3.4.13

创建topic

创建一个topic,名为topic001,3个partition,副本因子2,执行以下命令即可:

[root@hecs-334217 kafka-compose]# docker exec kafka-1 kafka-topics.sh --create --topic topic001 --partitions 3 --zookeeper zookeeper:2181 --replication-factor 2
Created topic topic001.

执行以下命令查看刚刚创建的topic,这次在容器kafka-2上执行命令试试:

[root@hecs-334217 kafka-compose]# docker exec kafka-2 kafka-topics.sh --list --zookeeper zookeeper:2181
test
topic001

可见刚刚创建的topic可以被查到;
查看刚刚创建的topic的情况,borker和副本情况一目了然,如下:

[root@hecs-334217 kafka-compose]# docker exec kafka-0 kafka-topics.sh --describe --topic topic001 --zookeeper zookeeper:2181
Topic: topic001 TopicId: umQtyLTtQQCeMG8W5bWcpA PartitionCount: 3       ReplicationFactor: 2    Configs: 
        Topic: topic001 Partition: 0    Leader: 0       Replicas: 0,1   Isr: 0,1
        Topic: topic001 Partition: 1    Leader: 1       Replicas: 1,2   Isr: 1,2
        Topic: topic001 Partition: 2    Leader: 2       Replicas: 2,0   Isr: 2,0

消费消息

执行如下命令,即可进入等待topic为topic001消息的状态:

docker exec kafka-2 \
kafka-console-consumer.sh \
--topic topic001 \
--bootstrap-server kafka-0:9093,kafka-1:9094,kafka-2:9095

目前还没有生产消息,因此控制台不会有内容输出,接下来尝试生产消息;

生产消息

打开一个新的窗口,执行如下命令,进入生产消息的命令行模式,注意不要漏掉参数"-it"

docker exec -it kafka-1 \
kafka-console-producer.sh \
--topic topic001 \
--broker-list kafka-0:9093,kafka-1:9094,kafka-2:9095

现在已经进入了生产消息的命令行模式,输入一些字符串然后回车,再去消费消息的控制台窗口看看,已经有消息打印出来,说明消息的生产和消费都成功了。
在这里插入图片描述

docker compose 命令

# 启动:
$ docker compose up -d  # docker-compose up -d 这种是旧版的,新版本已经抛弃了
 
# 查看compose容器
$ docker compose ps

# 删除容器:
$ docker compose down

Kafka 可视化工具(Kafka Tool)

https://www.cnblogs.com/miracle-luna/p/11299345.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了构建 KafkaDocker 镜像,你可以按照以下步骤进行操作: 1. 首先,创建一个新的目录来存放你的 Dockerfile 和其他相关文件。 2. 在该目录下创建一个名为 Dockerfile 的文件,并使用文本编辑器打开。 3. 在 Dockerfile 中,使用以下基础镜像作为起点: ```Dockerfile FROM openjdk:8-jre-alpine ``` 4. 安装 Kafka 的依赖项和其他必要的工具,可以使用以下命令: ```Dockerfile RUN apk add --no-cache bash curl jq ``` 5. 下载并解压 Kafka 的二进制文件。你可以在 Kafka 的官方网站上找到可用的版本。使用以下命令: ```Dockerfile ENV KAFKA_VERSION=<kafka_version> ENV SCALA_VERSION=<scala_version> RUN wget https://downloads.apache.org/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz && \ tar -xzf kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt && \ rm kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz ``` 请将 `<kafka_version>` 和 `<scala_version>` 替换为适当的 Kafka 版本和 Scala 版本。 6. 设置 Kafka 相关的环境变量,例如 ZooKeeper 的连接地址等。使用以下命令: ```Dockerfile ENV KAFKA_HOME=/opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} ENV PATH=${KAFKA_HOME}/bin:$PATH ENV KAFKA_ZOOKEEPER_CONNECT=localhost:2181 ENV KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 ENV KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 ``` 你可以根据你的需求修改这些环境变量。 7. 将 Kafka 的启动脚本添加到容器中,并设置可执行权限。使用以下命令: ```Dockerfile COPY start-kafka.sh /usr/bin/start-kafka.sh RUN chmod +x /usr/bin/start-kafka.sh ``` 8. 创建一个用于存储 Kafka 数据的目录,并设置适当的权限。使用以下命令: ```Dockerfile RUN mkdir -p /var/lib/kafka/data RUN chmod -R 777 /var/lib/kafka/data ``` 9. 定义容器启动时要执行的命令。使用以下命令: ```Dockerfile CMD ["start-kafka.sh"] ``` 10. 保存并关闭 Dockerfile 文件。 11. 在相同的目录下,创建一个名为 `start-kafka.sh` 的脚本文件,并使用文本编辑器打开。 12. 在 `start-kafka.sh` 脚本文件中,添加以下内容: ```bash #!/bin/bash $KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties & $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties ``` 13. 保存并关闭 `start-kafka.sh` 文件。 14. 在终端中,导航到你的 Dockerfile 所在的目录。 15. 使用以下命令来构建 Docker 镜像: ```bash docker build -t kafka:latest . ``` 16. 构建完成后,你可以使用以下命令来运行 Kafka 容器: ```bash docker run -d --name kafka -p 9092:9092 kafka:latest ``` 以上就是构建 Kafka Docker 镜像的基本步骤。你可以根据需要进行调整和优化。注意确保你已经安装了 Docker 并具有适当的权限来执行这些操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值