docker 部署kafka

随笔记录

目录

1. 安装zookeeper

2. 安装Kafka

2.1 拉取kafka image

2.2 查询本地docker images

2.3 查看本地 容器(docker container)

2.3.1 查看本地已启动的 docker container

2.3.2 查看所有容器的列表,包括已停止的容器。

2.4 删除指定容器

2.5 启动kafka 镜像

2.5.1 启动kafaka 镜像

2.5.2 验证kafka 容器已启动 

2.6 创建测试主题

2.6.1 进入kafka容器

2.6.2 创建topic

2.6.3 在创建的主题中生产消息 

2.6.4 kafka 消费者消费消息前,先进入kafka 容器


1. 安装zookeeper

docker会自动拉取对应镜像

# docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

[root@localhost Docker-Compose-Master]# mkdir zookeeper
[root@localhost Docker-Compose-Master]# ls
docker-compose.yml  kafka  zookeeper
[root@localhost Docker-Compose-Master]# cd zookeeper/
[root@localhost zookeeper]# ls
[root@localhost zookeeper]#
[root@localhost zookeeper]# docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper
Unable to find image 'wurstmeister/zookeeper:latest' locally
latest: Pulling from wurstmeister/zookeeper
a3ed95caeb02: Pull complete
ef38b711a50f: Pull complete
e057c74597c7: Pull complete
666c214f6385: Pull complete
c3d6a96f1ffc: Pull complete
3fe26a83e0ca: Pull complete
3d3a7dd3a3b1: Pull complete
f8cc938abe5f: Pull complete
9978b75f7a58: Pull complete
4d4dbcc8f8cc: Pull complete
8b130a9baa49: Pull complete
6b9611650a73: Pull complete
5df5aac51927: Pull complete
76eea4448d9b: Pull complete
8b66990876c6: Pull complete
f0dd38204b6f: Pull complete
Digest: sha256:7a7fd44a72104bfbd24a77844bad5fabc86485b036f988ea927d1780782a6680
Status: Downloaded newer image for wurstmeister/zookeeper:latest
8dbbc5f4768e37b6049e7830e2c233476b629bdf3bafdf2eef9b0d2eb127b6c2
[root@localhost zookeeper]#


======================================================================================
# 以上命令参数解释说明:

docker run:用于创建并启动一个新的容器

--name zookeeper:指定容器的名称为 "zookeeper"

-p 2181:2181:将主机的端口 2181 映射到容器的端口 2181,允许从主机上的其他应用程序访问 ZooKeeper 服务

-v /etc/localtime:/etc/localtime:将主机的系统时间配置文件挂载到容器内,以便容器内的时间与主机保持同步

wurstmeister/zookeeper:指定要使用的容器镜像

总结:
执行该命令后,Docker 将使用 wurstmeister/zookeeper 镜像创建一个名为 "zookeeper" 的容器。ZooKeeper 是一个开源的分布式协调服务,该容器提供了运行 ZooKeeper 服务器所需的环境。
通过将主机的端口 2181 映射到容器的端口 2181,可以轻松地访问在容器中运行的 ZooKeeper 服务。使用 -v 参数将主机的系统时间配置文件挂载到容器内,可以确保容器的时间与主机保持一致。
这条命令执行后,ZooKeeper 容器将在后台运行,并且您可以使用 docker ps 命令来查看正在运行的容器。

2. 安装Kafka

2.1 拉取kafka image
# 拉取kafka 镜像
# docker pull wuristmeister/kafka

[root@localhost kafka]# pwd
/home/magx/Docker-Compose-Master/kafka
[root@localhost kafka]#
[root@localhost kafka]# ll
total 8
-rw-r--r--. 1 root root 3112 Dec  4 17:48 docker-compose-kafka.yml
drwxr-xr-x. 5 root root 4096 Dec  4 16:40 kafka-docker
[root@localhost kafka]#
[root@localhost kafka]# docker pull wurstmeister/kafka
Using default tag: latest
latest: Pulling from wurstmeister/kafka
42c077c10790: Pull complete
44b062e78fd7: Pull complete
b3ba9647f279: Pull complete
10c9a58bd495: Pull complete
ed9bd501c190: Pull complete
03346d650161: Pull complete
539ec416bc55: Pull complete
Digest: sha256:2d4bbf9cc83d9854d36582987da5f939fb9255fb128d18e3cf2c6ad825a32751
Status: Downloaded newer image for wurstmeister/kafka:latest
docker.io/wurstmeister/kafka:latest
[root@localhost kafka]#



======================================================================================
# 以上命令参数解释说明:

docker pull:用于从 Docker 镜像仓库中拉取(下载)一个镜像

wurstmeister/kafka:要拉取的镜像的名称

总结:
执行该命令后,Docker 将尝试从 Docker 镜像仓库中下载名为 wurstmeister/kafka 的镜像。这个镜像是由 wurstmeister 团队维护的 Kafka 镜像,Kafka 是一个流行的分布式流处理平台。

注意:
执行该命令需要在网络环境良好的情况下,并且 Docker 需要与 Docker 镜像仓库建立连接。下载完成后,可以使用 docker images 命令来查看已下载的镜像列表,确认 wurstmeister/kafka 镜像已成功下载
2.2 查询本地docker images
# 查询本地docker 镜像文件
# docker images

[root@localhost kafka]# docker images
REPOSITORY               TAG       IMAGE ID       CREATED         SIZE
hello-world              latest    9c7a54a9a43c   7 months ago    13.3kB
wurstmeister/kafka       latest    a692873757c0   19 months ago   468MB
wurstmeister/zookeeper   latest    3f43f72cb283   4 years ago     510MB
[root@localhost kafka]#
[root@localhost kafka]#


2.3 查看本地 容器(docker container)

2.3.1 查看本地已启动的 docker container
# 查询本地已启动docker 容器
# docker ps

[root@localhost kafka]#
[root@localhost kafka]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS       PORTS                                                                   NAMES
8dbbc5f4768e   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   2 weeks ago   Up 2 weeks   22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   zookeeper
[root@localhost kafka]#


2.3.2 查看所有容器的列表,包括已停止的容器。
# 查看本地所有 docker container
# docker ps -a 命令来查看所有容器的列表,包括已停止的容器。
               它会显示容器的 ID、状态、创建时间等信息。

[root@localhost kafka]# docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                       PORTS                                                                   NAMES
913b2a1d7f07   wurstmeister/kafka       "start-kafka.sh"         11 minutes ago   Exited (143) 8 minutes ago                                                                           kafka
8dbbc5f4768e   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   2 weeks ago      Up 2 weeks                   22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   zookeeper
b38e9b5b6a2e   hello-world              "/hello"                 2 weeks ago      Exited (0) 2 weeks ago                                                                               infallible_rosalind
[root@localhost kafka]#

2.4 删除指定容器

# 要删除某个 Docker 容器,您可以使用 docker rm 命令,并提供要删除的容器的标识符或名称作为参数

# docker rm <CONTAINER_ID>     # 容器标识符: container_ID
or
# docker rm <CONTAINER_NAME>   #容器名称: container_name


# 删除前查询本地所有docker 容器
[root@localhost kafka]# docker ps -a 
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                        PORTS                                                                   NAMES
913b2a1d7f07   wurstmeister/kafka       "start-kafka.sh"         19 minutes ago   Exited (143) 16 minutes ago                                                                           kafka
8dbbc5f4768e   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   2 weeks ago      Up 2 weeks                    22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   zookeeper
b38e9b5b6a2e   hello-world              "/hello"                 2 weeks ago      Exited (0) 2 weeks ago                                                                                infallible_rosalind
[root@localhost kafka]#
[root@localhost kafka]#

# 删除指定docker 容器  
[root@localhost kafka]#
[root@localhost kafka]# docker rm 913b2a1d7f07            # docker rm <container_ID>
913b2a1d7f07
[root@localhost kafka]#

# 删除容器后,再次查询本地所有容器,不再显示已删除的容器
[root@localhost kafka]# docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS                   PORTS                                                                   NAMES
8dbbc5f4768e   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   2 weeks ago   Up 2 weeks               22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   zookeeper
b38e9b5b6a2e   hello-world              "/hello"                 2 weeks ago   Exited (0) 2 weeks ago                                                                           infallible_rosalind
[root@localhost kafka]#

2.5 启动kafka 镜像

2.5.1 启动kafaka container
#启动kakfa 容器

[root@localhost kafka]#
[root@localhost kafka]# docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 --env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 wurstmeister/kafka
b03ba55d79cb38423e17107bd2342842143a6b2a4010bab90bf096eb851ceb79
[root@localhost kafka]#

======================================================================================

通过以上命令,我们链接了ZooKeeper容器,并且设置了几个环境变量来配置Kafka。

在这个命令中:

--name kafka: 设置容器的名字为“kafka”。

-p 9092:9092: 将容器的9092端口映射到宿主机的9092端口。

--link zookeeper:zookeeper: 连接到名为“zookeeper”的另一个Docker容器,并且在当前的容器中可以通过zookeeper这个别名来访问它。

--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181: 设置环境变量,指定ZooKeeper的连接字符串。

--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092: 设置环境变量,指定Kafka的advertised listeners。

--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 设置环境变量,指定Kafka的listeners。

--env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1: 设置环境变量,指定offsets topic的副本因子。

wurstmeister/kafka: 使用的Docker镜像名字

确保在运行这个命令之前ZooKeeper容器已经在运行,并且可以通过zookeeper:2181来访问。
如果你的ZooKeeper容器有一个不同的名字或者你使用的是不同的网络设置,需要相应地调整--link和KAFKA_ZOOKEEPER_CONNECT的值
2.5.2 验证kafka 容器已启动 
# docker ps        # 查询 已启动 docker container
#docker ps -a      # 查询   所有 docker container

[root@localhost kafka]# docker ps                 
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                                                                   NAMES
b03ba55d79cb   wurstmeister/kafka       "start-kafka.sh"         27 seconds ago   Up 26 seconds   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                               kafka
8dbbc5f4768e   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   2 weeks ago      Up 2 weeks      22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   zookeeper
[root@localhost kafka]#
[root@localhost kafka]#
[root@localhost kafka]# docker ps -a               # 查询所有 docker container
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                   PORTS                                                                   NAMES
b03ba55d79cb   wurstmeister/kafka       "start-kafka.sh"         41 seconds ago   Up 40 seconds            0.0.0.0:9092->9092/tcp, :::9092->9092/tcp                               kafka
8dbbc5f4768e   wurstmeister/zookeeper   "/bin/sh -c '/usr/sb…"   2 weeks ago      Up 2 weeks               22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp   zookeeper
b38e9b5b6a2e   hello-world              "/hello"                 2 weeks ago      Exited (0) 2 weeks ago                                                                           infallible_rosalind
[root@localhost kafka]#

2.6 创建测试主题

2.6.1 进入kafka容器
# 进入kafka容器
#  docker exec -it kafka /bin/bash

[root@localhost kafka]#
[root@localhost kafka]# docker exec -it kafka /bin/bash
root@b03ba55d79cb:/#
root@b03ba55d79cb:/#
2.6.2 创建topic
# 在Kafka容器中,运行以下命令创建一个测试主题
# 进入kafka 容器后,创建topic

# kafka-topics.sh --create --topic <topic_name> --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181


[root@localhost kafka]# docker exec -it kafka /bin/bash            # 进入kafka 容器
root@b03ba55d79cb:/#
root@b03ba55d79cb:/# kafka-topics.sh --create --topic test1221 --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181                    # 创建 topic
Created topic test1221.
root@b03ba55d79cb:/#


注意:
topic_name 不能包含 , 或者 下划线(_)
2.6.3 在创建的主题中生产消息 
# 在创建的主题中,生产kafka 消息
# kafka-console-producer.sh --broker-list localhost:9092 --topic <主题名>

[root@localhost kafka]# docker exec -it kafka /bin/bash
root@b03ba55d79cb:/#
root@b03ba55d79cb:/# kafka-topics.sh --create --topic test1221 --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181
Created topic test1221.
root@b03ba55d79cb:/#
root@b03ba55d79cb:/#
root@b03ba55d79cb:/# kafka-console-producer.sh --broker-list localhost:9092 --topic test1221
>hell ka^H^H
>hello kafka-122^H^H
>
>hello kafka-20131221
>
>topci test2023? y/n
>topci test1221!
>e\^H
>e
>
>^Croot@b03ba55d79cb:/#    #通过  Ctrl + C 退出kafka 生产者
root@b03ba55d79cb:/#

2.6.4 kafka 消费者消费消息前,先进入kafka 容器
在另一个终端窗口中后,操作如下:
1)需要先进入kakfa 容器
# docker exec -it kafka /bin/bash

2)打开一个消费者来读取测试主题的消息
#kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic <主题名> --from-beginning

--from-beginning 为可选参数: 每次消费 该主题所有消息
不带 --from-beginning  参数: 每次仅仅消费启动kafka 消费者后,该主题最新的消息

ex: kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic <主题名> 
======================================================================================

[root@localhost ~]#
[root@localhost ~]# docker exec -it kafka /bin/bash       #进入kafka 容器
root@b03ba55d79cb:/#
root@b03ba55d79cb:/# kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test1221 --from-beginning
hell ka
hello kafka-122

hello kafka-20131221

topci test2023? y/n
topci test1221!
e\
e

^CProcessed a total of 11 messages      #通过  Ctrl + C 退出kafka 消费者
root@b03ba55d79cb:/#

到此,基本完成使用Docker运行ZooKeeper和Kafka,并进行基本验证的过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/261291.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus的分页语句流程保姆级分析(四)

group : com.baomidou version:3.5.2.2-SNAPSHOT 为什么要分析分页流程 因为我在使用的时候发现分页不生效&#xff0c;得分析一下找到原因。 问题描述&#xff1a; 我的分页不生效。 com.baomidou.mybatisplus.extension.plugins.pagination的Page对象。 代码如下&#x…

【数据结构】线段树算法总结(区间修改)

知识概览 线段树一般有5个操作&#xff1a; pushup&#xff1a;用子节点更新当前节点信息pushdown&#xff1a;把懒标记往下传build&#xff1a;初始化一棵树modify&#xff1a;修改一个区间query&#xff1a;查询一个区间 不带懒标记&#xff08;支持单点修改&#xff09;的线…

猫罐头那种好吃又健康?五大值得买的猫罐头推荐

很多新手养猫的姐妹们都会为选罐头感到焦虑&#xff01;但是每种罐头都有优缺点&#xff0c;每只猫咪的胃口也都不同&#xff0c;只有适合自家猫的才是最好的。所以姐妹们在选罐头之前可以先做好功课&#xff0c;了解一下怎么选好的罐头。 作为一个已经离职的宠物医生&#xff…

6.6TB 全球地名路网透明标签瓦片地图

但凡要干一件稍微有意义的事&#xff0c;总会需要一定的时间积累&#xff0c;甚至还需要下不少的笨工夫&#xff0c;也正因如此&#xff0c;才会让这些最终做成的事更具有价值和意义。 比如我们曾在一个项目的助推下&#xff0c;就干了一件比较有意义的事情&#xff0c;尽管投入…

从实践角度优化数据库设计:深入解析三范式的应用

总述 第一范式(1NF):要求关系模式中的每个属性都是不可分的数据项,即属性具有原子性。第二范式(2NF):在满足1NF的基础上,要求关系模式中的所有非主属性都完全函数依赖于整个候选键(或主键)。第三范式(3NF):在满足2NF的基础上,要求关系模式中的每个非主属性都不传…

虚拟机的下载、安装

下载 vmware workstation&#xff08;收费的虚拟机&#xff09; 下载vbox 网址&#xff1a;Oracle VM VirtualBox&#xff08;免费的虚拟机&#xff09; 以下选择一个下载即可&#xff0c;建议下载vbox&#xff0c;因为是免费的。安装的时候默认下一步即可&#xff08;路径最好…

java并发编程四 Monitor 概念,api介绍与线程状态转换

Monitor 概念 Java 对象头 以 32 位虚拟机为例子&#xff1a; 普通对象 数组对象 其中 Mark Word 结构为 64 位虚拟机 Mark Word 小故事 故事角色 老王 - JVM小南 - 线程小女 - 线程房间 - 对象房间门上 - 防盗锁 - Monitor房间门上 - 小南书包 - 轻量级锁房间门上 -…

【实战】如何在Docker Image中轻松运行MySQL

定义 使用Docker运行MySQL有许多优势。它允许数据库程序和数据分离&#xff0c;增强了数据的安全性和可靠性。Docker Image的轻便性简化了MySQL的部署和迁移&#xff0c;而Docker的资源隔离功能确保了应用程序之间无冲突。结合中间件和容器化系统&#xff0c;Docker为MySQL提供…

java Filter内存马分析

目录 0x01 什么是Filter马 0x02 环境搭建 0x03 Filter内存马探索 1.tomcat Filter 的流程分析 2.攻击思路分析 0x04 Filter内存马exp编写 本文由掌控安全学院 - xilitter 投稿 知识基础&#xff1a; 刚开始内存马的这块学习与反序列化并无太大关系&#xff0c;反而与ja…

如何制作一本电子产品图册,打开线上推广呢

​随着互联网的普及和社交媒体的兴起&#xff0c;越来越多的企业开始注重线上传播。对于产品而言&#xff0c;制作一本精美的产品图册不仅可以展示产品的外观和特点&#xff0c;还可以通过线上传播吸引更多的潜在客户。 不会制作的朋友们&#xff0c;其实也不用担心&#xff0c…

使用 uiautomatorviewer 获取元素的定位信息

1. 使用 adb 连接设备&#xff08;真机或模拟器&#xff09; 连接夜神模拟器&#xff1a;adb connect 127.0.0.1:62001 连接MuMu模拟器&#xff1a;adb connect 127.0.0.1:7555 2. 打开 uiautomatorviewer 在 android-sdk --> tools 目录&#xff0c;找到 uiautomatorvie…

LeetCode Hot100 215.数组中的第k个最大元素

题目&#xff1a; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 方法一&#xff…

获取请求体中json数据并解析到实体对象

目录 相关依赖 前端代码 后端代码 测试结果 相关依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version> </dependency> <dependency><groupId>comm…

上传app到app store的完整流程

上传ios的app到app store首先需要一个打包好的ipa文件。 要上传这个ipa必须要使用同一个苹果开发者账号的证书打包&#xff0c;才能上架到同一个app store上&#xff0c;假如是使用别人的证书打包的&#xff0c;只能上传到别人的app store账号。 假如你还没有创建证书&#x…

route 路由使用记录

一、路由的基本介绍 路由是计算机网络中的一个重要概念&#xff0c;它用于确定数据包从源地址到目的地址的路径。在网络中&#xff0c;路由器是负责转发数据包的设备。 下面是关于路由的基本知识和使用方法的介绍&#xff1a; 路由表&#xff1a;路由器通过路由表来确定数据包…

Excel 理解IF({1,0}...结构啥意思

背景知识&#xff1a; IF(条件,是则结果,否则结果) 逻辑真除了用True以外&#xff0c;还可以用不为0的数值&#xff0c;常用的是1&#xff1b;逻辑假除了用Fasle以外&#xff0c;还可以用数值0 理解公式 IF({1,0},B2:B8&C2:C8,D2:D8)就是构造一个二维数组&#xff0c;把…

Unity中Shader平移矩阵

文章目录 前言方式一&#xff1a;对顶点本地空间下的坐标进行相加平移1、在属性面板定义一个四维变量记录在 xyz 上平移多少。2、在常量缓冲区进行申明3、在顶点着色器中&#xff0c;在进行其他坐标转化之前&#xff0c;对模型顶点本地空间下的坐标进行转化4、我们来看看效果 方…

Linux宝塔面板本地部署Discuz论坛发布到公网访问【无需公网IP】

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

产品需求分析师的职责内容(合集)

产品需求分析师的职责内容1 职责&#xff1a; 1、根据公司战略规划&#xff0c;负责妇产科相关平台产品的中长期规划; 2、组织需求调研、收集、分析、整理、提炼、用户的需求&#xff0c;分析形成可行性研究报告; 3、深入挖掘产品需求&#xff0c;管理用户及公司内部业务需求&a…

20V升26V 600mA升压型LED驱动芯片,PWM调光芯片-AH1160

AH1160是一个功能强大的升压型LED驱动芯片&#xff0c;专为需要精确控制LED亮度的PWM调光应用而设计。它可将20V输入电压升压至26V&#xff0c;同时提供稳定的600mA电流输出&#xff0c;适用于各种LED照明设备。 芯片特点&#xff1a; 1. 输入电压范围&#xff1a;AH1160可在…