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
相关推荐
EatFans几秒前
Docker 实战部署:从本地镜像到云服务器,一篇走通 FastAPI + Celery + MySQL + Redis + Nginx
docker·fastapi
judezh21 分钟前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
暗不需求26 分钟前
Docker 入门:从「光盘与 DVD」到全栈项目容器化实战
docker·容器·面试
EdgeEcho34 分钟前
我的 GitHub Action 本地全绿,放上去五个 bug——包括一个让文件完全不执行的
devops
探索云原生37 分钟前
一个 Deployment 就能跑 vLLM,为什么还需要 KServe?
docker·ai·云原生·kubernetes·go
分布式存储与RustFS5 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心6 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing6 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
guo_wen_qiang6 天前
上传本地镜像到harbor中
docker·容器·持续部署
羑悻的小杀马特6 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作