Kafka3.3.1 docker镜像构建及使用说明

这篇具有很好参考价值的文章主要介绍了Kafka3.3.1 docker镜像构建及使用说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

kafka3.3.1版本的kraft已经标记为生产就绪了。抛弃了zookeeper,部署起来也会方便一些,但是在通过docker部署的时候遇到了一些问题,在这里记录一下。

Docker镜像构建

官方quickstartdemo中讲如果使用kraft,需要先对存储路径进行格式化。这个在构建镜像过程中遇到了问题。因为之前构建镜像的时候没有遇到过这种需要先初始化再构建的情况。研究后发现,可以通过脚本初始化。

创建docker-entrypoint.sh脚本。如果执行脚本的时候指定init参数就初始化存储路径,否则不初始化。

#!/bin/bash

if [ "$1" = 'init' ]; then
	KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
	bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
	echo "formated ..."
fi

bin/kafka-server-start.sh config/kraft/server.properties

编写dockerfile,将上述脚本拷贝到镜像中

FROM openjdk:8

MAINTAINER aspirin

ENV LANG=C.UTF-8

ENV TZ=Asia/Shanghai

COPY kafka_2.12-3.3.1.tgz /opt

RUN cd /opt && tar -zxvf kafka_2.12-3.3.1.tgz -C /opt

RUN rm -rf kafka_2.12-3.3.1.tgz

COPY docker-entrypoint.sh /opt/kafka_2.12-3.3.1

WORKDIR /opt/kafka_2.12-3.3.1

ENTRYPOINT ["/bin/bash", "docker-entrypoint.sh" ]

构建镜像

docker build -t ss/kafka:2.12-3.3.1 .

这样在首次启动镜像的适合指定init参数,之后不再指定参数即可解决。

Docker容器外无法访问已经启动kafka容器,但是容器内可以

在server.properties配置文件中,kafka有两个参数,advertised.listenerslisteners。可以查看官方文档说明。当然不看也罢,越看越迷糊。

大概意思就是说listeners参数是内网通信用的,但是像docker这种可以理解为是通过外网通信了,这时候不止需要配置listeners,还需要配置advertised.listeners,这个是外网通信用的,可以理解为这个参数是对内网地址的代理。这个参数需要写docker宿主机的ip地址,端口写启动docker容器时候映射的端口。

说的有点绕,先上配置看一下:

listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://192.168.2.3:9092

第一行配置值为0.0.0.0:9092,这个地址可写localhost(试过了不可以是localhost)也可以写回环地址0.0.0.0

第二行的配置值,192.168.2.3这个ip是docker容器宿主机的ip。9092需要跟第一行保持一致。因为kafka是启动在9092端口上的,如果改成1092,肯定不对,因为1092这个端口就没有被程序使用。这里写了9092,docker容器创建时候映射的也是这个端口,而且需要保持一致。

疑问:docker容器创建的时候将9092映射成其他的可以吗?没有尝试过,应该是不可以。有兴趣可以尝试一下,如果非要修改端口建议将上述所有9092同时修改为其他端口。

可以看到我下面容器启动映射的端口也是9092.文章来源地址https://www.toymoban.com/news/detail-404640.html

afae7c849595   ss/kafka:2.12-3.3.1                          "/bin/bash docker-en…"   About a minute ago   Up About a minute           0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                                                                                                                                                                                                                                                                                                                        kafka331

到了这里,关于Kafka3.3.1 docker镜像构建及使用说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kafka 命令脚本说明以及在java中使用

    1、关于topic,这里用window 来示例 2、创建 first topic,五个分区,1个副本 3、查看当前服务器中的所有 topic 4、查看 first 主题的详情 5、修改分区数**(注意:分区数只能增加,不能减少)** 6、删除 topic,该操作在winodw,会出现文件授权问题,日志可以在kafka的启动命令窗口中查看,

    2024年02月10日
    浏览(48)
  • docker logs 使用说明

    docker logs 可以查看某个容器内的日志情况。 前置参数说明 c_name 容器名称 / 容器ID  获取容器的日志 , 命令如下: -n   查看最近多少条记录:docker logs -n 5 c_name --tail 与-n 一样 ,输出倒数N行的日志:docker logs --tail 5 c_name -f 跟踪实时日志输出:docker logs -f c_name   -t 查看日志的

    2024年02月14日
    浏览(30)
  • flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

    阅读此文默认读者对docker、docker-compose有一定了解。 docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。 如下: 注意三个容器都映射了/opt/flink目录。需要先将/opt/flink目录拷贝到跟docker-compose.yml同一目录下,并分别重命名,如下图: 三个文件夹内容是一样的,只是

    2024年02月03日
    浏览(30)
  • 40、Flink 的Apache Kafka connector(kafka source 和sink 说明及使用示例) 完整版

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月05日
    浏览(46)
  • Cannal初体验:使用Docker安装Canal详细流程说明

    此次安装命令皆是以管理员身份运行 ①创建名为mysql-test的网络 ②让mysql加入此网络 2.1 开启mysql主从配置 1、修改配置文件 打开mysql挂载目录下( /mydata/mysql/conf )的 my.cnf 配置文件,添加以下配置 配置解读: ① server-id :指定当前服务的id,必须指定,否则会报错 ② log-bin :设

    2024年02月13日
    浏览(44)
  • Docker【部署 04】Docker Compose下载安装及实例Milvus Docker compose(CPU)使用说明分享

    Docker Compose 是一个用于定义和管理多个 Docker 容器的工具,旨在简化容器化应用程序的开发、部署和管理过程。通过 Docker Compose,您可以使用一个单独的配置文件(通常是 docker-compose.yml 文件)来描述应用程序中涉及的多个容器、网络设置、存储卷等。 Docker Compose 官网安装说

    2024年02月11日
    浏览(51)
  • docker 3.1 镜像

    ‍ 运行镜像/容器 docker run hello-world ‍ ​ ​ 将当前容器 My 打包为镜像 My_image ‍ 该格式命令 docker build -t image name Dockerfile dir ​ 生成镜像 注意 1:Dockerfile 文件必须命名为 Dockerfile ​ 或 dockerfile ​ 注意 2: image name ​不支持大写字母,不支持中文 注意 3: Dockerfile dir ​ 必须

    2024年02月20日
    浏览(30)
  • docker构建镜像需使用的命令

    Dockerfile 指令 Dockerfile 是 Docker 镜像的构建蓝图,其中包括了一系列指令,可以帮助您定义如何构建和配置 Docker 镜像。以下是几个常见的 Dockerfile 指令: FROM:用于指定该镜像的基础镜像,也就是从哪个镜像开始构建; RUN:用于在新的镜像中运行命令,比如安装软件包、配置

    2024年02月15日
    浏览(36)
  • Docker 项目如何使用 Dockerfile 构建镜像?

    1.1、Docker 简介 :讲述 Docker 的起源、它是如何革新现代软件开发的,以及它为开发者和运维团队带来的好处。重点强调 Docker 的轻量级特性和它在提高应用部署、扩展和隔离方面的优势。 本文已收录于,我的技术网站 ddkk.com,有大厂完整面经,工作技术,架构师成长之路,等

    2024年01月16日
    浏览(70)
  • Docker 解析:使用 Dockerfile 自动构建镜像

    简介 Docker 容器是使用 基础 镜像创建的。一个镜像可以是基本的,只包含操作系统的基本要素,也可以包含一个准备好启动的复杂的预构建应用程序堆栈。 在使用 Docker 构建镜像时,每个操作(例如执行的命令,比如 apt-get install)都会形成一个新的层叠在之前的层之上。然

    2024年03月26日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包