基于国产处理器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
本文来自博客园,作者:Jerry·,转载请注明原文链接:https://www.cnblogs.com/jerry-0910/p/18265928