基于国产处理器ARM64架构下docker容器的KAFKA安装

概述

在使用kafka官方镜像、ubuntu的kafka镜像和bitnami的kafka镜像都是用不了的情况下,在此使用kafka源码包和jdk基础镜像构建kafka镜像,本教程将指导你如何使用Docker制作一个Kafka镜像。Kafka是一个高性能、分布式的消息队列系统,用于处理大规模的实时数据流。使用Docker制作Kafka镜像可以方便地部署和管理。

kafka源码包下载地址:https://kafka.apache.org/downloads

jdk基础镜像:openjdk:8

目录结构

dockerbuild
--Dockerfile				#Dockerfile文件 
--target  #构建Kafka底包
--docker-entrypoint.sh    #启动脚本
----kafka_2.12-3.7.0.tgz  #kafka源码包
----server.properties		#kafka配置文件
----zookeeper.properties	#zookeeper配置文件

Dockerfile

Dockerfile是一个用于构建Docker镜像的文本文件。在这一步,我们将创建一个Dockerfile,用于制作Kafka镜像。

# 基于官方的OpenJDK 8镜像作为基础镜像
FROM openjdk:8
# LABEL Jerry/https://www.cnblogs.com/jerry-0910

# 设置Kafka版本
ARG KAFKA_VERSION=3.7.0
 
# 设置Kafka安装路径
ARG KAFKA_HOME=/opt/kafka_2.12-${KAFKA_VERSION}
 
# 复制并安装Kafka
COPY ./target/kafka_2.12-${KAFKA_VERSION}.tgz /
RUN tar -xzf /kafka_2.12-${KAFKA_VERSION}.tgz -C /opt && \
    rm /kafka_2.12-${KAFKA_VERSION}.tgz

# 配置文件
COPY ./target/server.properties /opt/kafka_2.12-${KAFKA_VERSION}/config
COPY ./target/zookeeper.properties /opt/kafka_2.12-${KAFKA_VERSION}/config
 
# 设置Kafka环境变量
ENV PATH=${KAFKA_HOME}/bin:$PATH
 
# 设置Kafka工作目录
WORKDIR ${KAFKA_HOME}
COPY ./docker-entrypoint.sh docker-entrypoint.sh
 
# 暴露Kafka监听端口
EXPOSE 9092 2181
 
# 启动Kafka
#CMD ["bin/kafka-server-start.sh", "config/server.properties"]
# 启动Kafka
ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh" ]

docker-entrypoint.sh

#!/bin/bash
# Auth Jerry/https://www.cnblogs.com/jerry-0910
bin/zookeeper-server-start.sh config/zookeeper.properties 2>&1 &
echo "start zk.." 
sleep 1
bin/kafka-server-start.sh config/server.properties

server.properties

broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://10.10.1.1:9092  #此处配置宿主机IP
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/kafka-logs
num.partitions=2
num.recovery.threads.per.data.dir=1	
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
auto.create.topics.enable=true

zookeeper.properties

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zklogs
clientPort=2181
maxClientCnxns=0
autopurge.purgeInterval=12
autopurge.snapRetainCount=6

构建Docker镜像

在完成Dockerfile的编写后,我们将使用以下命令构建Docker镜像:

docker build -t jerry/kafka:3.7.0 .

运行Kafka容器

完成Docker镜像的构建后,我们可以使用以下命令来运行Kafka容器:

docker run -d  --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name  kafka-server -p 9092:9092 -v /etc/localtime:/etc/localtime jerry/kafka:3.7.0
posted @   Jerry·  阅读(411)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示