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 container

2.5.2 验证kafka 容器已启动 

2.6 创建测试主题

2.6.1 进入kafka容器

2.6.2 创建topic

2.6.3 查询已创建的topic

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

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 包含 . 或者 _ 时,在执行创建topic过程中,会出现一个警告信息,提示主题名称中句点和下划线的使用限制。最后,命令成功执行并显示创建主题的结果root@b03ba55d79cb:/# kafka-topics.sh --create --topic "alarm_warning" --partitions 1 --replication-factor 1 --zookeeper zookeeper:2181
WARNING: Due to limitations in metric names, topics with a period ('.') or underscore ('_') could collide. To avoid issues it is best to use either, but not both.
Created topic alarm_warning.
root@b03ba55d79cb:/#注意:
在执行命令之后,出现了一个警告信息,提示由于指标名称的限制,主题名称中的句点('.')或下划线('_')可能会发生冲突。为了避免问题,最好只使用其中一种符号,而不是同时使用
2.6.3 查询已创建的topic
# 查询已创建的所有topic[root@localhost grafana_loki_vector]# docker exec -it kafka /bin/bash   # 进入容器
root@b03ba55d79cb:/#
root@b03ba55d79cb:/# kafka-topics.sh --list --zookeeper zookeeper:2181  # 查询topic
__consumer_offsets
alarm_warning
mag_test
test
test1221
test2013
test2023
test20231221
root@b03ba55d79cb:/#

 

2.6.4 在创建的主题中生产消息 
# 在创建的主题中,生产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/bash2)打开一个消费者来读取测试主题的消息
#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-122hello kafka-20131221topci test2023? y/n
topci test1221!
e\
e^CProcessed a total of 11 messages      #通过  Ctrl + C 退出kafka 消费者
root@b03ba55d79cb:/#

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm二手车交易平台的设计论文

摘 要 进入21世纪网络和计算机得到了飞速发展&#xff0c;并和生活进行了紧密的结合。目前&#xff0c;网络的运行速度以达到了千兆&#xff0c;覆盖范围更是深入到生活中的角角落落。这就促使二手交易网站的发展。二手交易网站可以实现远程购物&#xff0c;远程选择喜欢的商品…

【数学建模美赛F奖速成系列】论文写作技巧+优秀论文讲评

目录 写在前面推荐课程历年优秀美赛论文 写在前面 由于美赛参赛规则是要求提交英文摘要和论文&#xff0c;作为评奖的唯一依据&#xff0c;这就要求参赛学生既要具有较好的数学建模能力&#xff0c;同时也需要具备较高的英语写作水平&#xff0c;并熟练掌握英语论文的写作技巧…

考研数学二内容总结

目录 高等数学 一、函数、极限、连续 考试内容 &#x1f3c1;总结&#xff1a; 考试要求 &#x1f3c1;1&#xff0e;理解函数的概念&#xff0c;掌握函数的表示法&#xff0c;会建立应用问题的函数关系&#xff0e; 2&#xff0e;了解函数的有界性、单调性、周期性和奇…

程序员自由创业周记#20:需求从何而来

程序员自由创业周记#20&#xff1a;需求从何而来 之前看过我周记的朋友应该了解我从7月份开始独立创业以来&#xff0c;主要做了两个产品&#xff0c;一个是加一&#xff0c;一个是Island Widgets - 灵动岛锁屏小组件 &#xff0c;上班的时候工作内容是上级主管分配&#xff0c…

C++基础语法总结

C使用 C的源文件扩展名是&#xff1a;cppC程序的入口是main函数C完全兼容c语言的语法 1、cin、cout C中常使用cin、cout进行控制台的输入和输出 #include <iostream> using namespace std;int main() {cout << "hello world !!!" << endl;retu…

Jenkins自动化构建打包,部署

1.环境准备 上传jdk&#xff0c;maven和tomcat的包&#xff0c;解压到/usr/local下并配置环境变量。 配置jdk [rootserver04 ~]# vim /etc/profile.d/java.sh JAVA_HOME/usr/local/java export PATH$JAVA_HOME/bin:$PATH##加载环境变量 [rootserver04 ~]# source /etc/profi…

DRF从入门到精通二(Request源码分析、DRF之序列化、反序列化、反序列化校验、序列化器常用字段及参数、source、定制字段、保存数据)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结&#xff1a; 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验序…

Ubuntu 常用命令之 df 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 在Ubuntu系统下&#xff0c;df命令是用来查看文件系统的磁盘空间占用情况的。df是disk free的缩写&#xff0c;这个命令可以获取硬盘被占用了多少空间&#xff0c;还有多少空间是可用的&#xff0c;硬盘的挂载点等信息。 df命令的…

静态HTTP:为什么它如此重要

静态HTTP是互联网上使用最广泛的数据传输协议之一&#xff0c;它在Web应用程序中扮演着至关重要的角色。本文将探讨静态HTTP的重要性及其在Web开发中的应用。 一、静态HTTP的定义和优势 静态HTTP是指服务器上预先生成好的静态文件&#xff0c;这些文件包含HTML、CSS、JavaScr…

程序员的自我修养:链接、装载与库-3 目标文件里有什么

1 目标文件的格式 2 目标文件是什么样的 3 挖掘SimpleSection.o 3.1 代码段 3.2 数据段和只读数据段 3.3 BSS段 3.4 其他段 4 ELF文件结构描述 4.1 文件头 4.2 段表 4.3 重定位表 4.4 字符串表 5 链接的接口-符号 待补充 107

共建还是对抗?BTC 铭文风波中开发者、矿工与社区的平衡艺术

近期&#xff0c;比特币铭文正加速进入一场争议与危机的漩涡。12 月 6 日&#xff0c;比特币核心开发人员 Luke Dashjr 在 X 表示&#xff0c;铭文&#xff08;Inscriptions&#xff09;正在利用比特币核心客户端 Bitcoin Core 的一个漏洞向区块链发送垃圾信息&#xff0c;Bitc…

鸿蒙开发基本概念

1、开发准备 1.1、UI框架 HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架可为开发者提供应用UI开发所必需的能力&#xff0c;比如多种组件、布局计算、动画能力、UI交互、绘制等。 方舟开发框架针对不同目的和技术…