DevOps系列文章 之 docker 制作kafka镜像

Docker制作Kafka镜像教程

概述

本教程将指导你如何使用Docker制作一个Kafka镜像。Kafka是一个高性能、分布式的消息队列系统,用于处理大规模的实时数据流。使用Docker制作Kafka镜像可以方便地部署和管理Kafka集群。

整体流程

下面是制作Kafka镜像的整体流程:

复制代码
步骤    描述
1    安装Docker
2    下载Kafka
3    创建Dockerfile
4    构建Docker镜像
5    运行Kafka容器
现在,让我们逐步来完成这些步骤。

步骤1:安装Docker

首先,你需要在你的机器上安装Docker。Docker是一个开源的容器化平台,可以帮助我们创建、部署和运行应用程序。

你可以通过以下命令来安装Docker:

复制代码
sudo apt-get update
sudo apt-get install docker-ce

步骤2:下载Kafka

在制作Kafka镜像之前,你需要下载Kafka二进制文件。你可以从Kafka的官方网站(

复制代码
wget 
tar -xzf kafka_2.13-2.8.0.tgz

步骤3:创建Dockerfile

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

在你的项目目录下创建一个名为Dockerfile的文件,并将以下代码复制到文件中:

复制代码
# 基于官方的OpenJDK 8镜像作为基础镜像
FROM openjdk:8

# 设置Kafka版本
ARG KAFKA_VERSION=2.8.0

# 设置Kafka安装路径
ARG KAFKA_HOME=/opt/kafka

# 下载并安装Kafka
RUN wget -q  && \
    tar -xzf kafka_2.13-${KAFKA_VERSION}.tgz -C /opt && \
    rm kafka_2.13-${KAFKA_VERSION}.tgz

# 设置Kafka环境变量
ENV PATH=${KAFKA_HOME}/bin:$PATH

# 设置Kafka工作目录
WORKDIR ${KAFKA_HOME}

# 暴露Kafka监听端口
EXPOSE 9092

# 启动Kafka
CMD ["kafka-server-start.sh", "config/server.properties"]

以上Dockerfile使用了官方的OpenJDK 8镜像作为基础镜像,并下载并安装了指定版本的Kafka。同时,它还设置了Kafka的环境变量和工作目录,并暴露Kafka的监听端口。

步骤4:构建Docker镜像

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

复制代码
docker build -t kafka:2.8.0 .

该命令会在当前目录下构建一个名为kafka:2.8.0的Docker镜像。

步骤5:运行Kafka容器

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

复制代码
docker run -d --name kafka -p 9092:9092 kafka:2.8.0

该命令会在后台运行一个名为kafka的容器,并将主机的9092端口映射到容器的9092端口。

至此,你已经成功地用Docker制作了一个Kafka镜像,并成功运行了一个Kafka容器。

完整案例

复制代码
# 基于官方的OpenJDK 8镜像作为基础镜像
FROM openjdk:8

# 设置Kafka版本
ARG KAFKA_VERSION=3.4.1

# 设置Kafka安装路径
ARG KAFKA_HOME=/opt/kafka
ADD kafka_2.12-3.4.1.tgz /opt
# 下载并安装Kafka
RUN mv /opt/kafka_2.12-3.4.1 /opt/kafka

# 设置Kafka环境变量
ENV PATH=${KAFKA_HOME}/bin:$PATH

# 设置Kafka工作目录
WORKDIR ${KAFKA_HOME}
COPY docker-entrypoint.sh docker-entrypoint.sh
# 暴露Kafka监听端口
EXPOSE 9092 2181

# 启动Kafka
ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh" ]

复制代码
#!/bin/bash
 
if [ "$1" = 'zk' ]; then
	zookeeper-server-start.sh config/zookeeper.properties 2>&1 &
	echo "zk ..."
fi
 
kafka-server-start.sh config/server.properties
相关推荐
BigBigHang29 分钟前
【docker】DM8达梦数据库的docker-compose以及一些启动踩坑
数据库·docker·容器
云道轩30 分钟前
使用Docker在Rocky Linux 9.5上在线部署LangFlow
linux·人工智能·docker·容器·langflow
伟大的大威32 分钟前
Docker 部署 Supabase并连接
运维·docker·容器
专家大圣1 小时前
轻量级远程开发利器:Code Server与cpolar协同实现安全云端编码
网络·docker·树莓派·香橙派·casaos·code server
岚天start1 小时前
云服务器以域名形式访问机房Kubernetes集群服务之解决方案
nginx·docker·kubernetes·kubesphere·解决方案·云服务器·机房
SRETalk3 小时前
Kafka 不难,只是你用得不对
kafka
宇宙机长4 小时前
【kafka】消息队列
分布式·kafka
cici158745 小时前
Docker搭建Hadoop集群
hadoop·docker·eureka
小醉你真好6 小时前
7、Docker 常用命令大全
docker·容器·eureka
Leckun6 小时前
Kafka 3.9.1的KRaft模式部署
分布式·kafka