Docker下安装Zookeeper以及Kafka
创始人
2024-01-30 20:35:47
0

一、安装Zookeeper

1. 查看Zookeeper镜像以及版本

  1. 访问Zookeeper镜像库地址
    zookeeper镜像
  2. 也可以通过命令docker search zookpper在命令行搜索zookeeper镜像,但是通过该命令无法查看远程镜像版本信息。

NAME:镜像名(镜像仓库源的名称)
DESCRIPTION:对该镜像的描述
STARS:类似 Github 里面的 star,表示点赞、喜欢的意思
OFFICIAL:是否 docker 官方发布
AUTOMATED:是否自动构建

2. 安装zookeeper

  1. 拉取zookeeper镜像
docker pull zookeeper:3.8.0-temurin
  1. 创建并运行zookeeper容器
docker run --name zookeeper --privileged=true -p 2181:2181 -d zookeeper:3.8.0-temurin

这里有一点需要注意,privileged命令的意思是使Docker应用容器获取宿主机root权限(特殊权限)。我使用的是官方提供的镜像,官方给出的示例中并没有使用–privileged=true命令,但是我在创建容器的过程中,没有该命令,会出现一个容器内存错误,导致容器创建失败,目前还不确定是镜像还是虚拟机的问题。

  1. 通过docker ps查看容器是否启动!
  2. 进入容器内部查看zookeeper容器状态
docker exec -it zookeeper_v bash
./bin/zkServer.sh status

status

3. 挂在配置文件

截止到这里,zookeeper实际上就已经装好了,借助docker可以轻松快速的装好一个zookeeper服务,但是如果此时需要部署项目就会比较麻烦,我们需要将自己的文件拷贝进入容器内部,然后进入容器内部操作,所以我们需要借助-v参数,将宿主机文件与容器文件做映射;

  1. 在本地创建文件夹用来挂在zookeeper配置信息(数据、配置、日志)
mkdir /usr/local/dockerv/zookeeper/{data,conf,datalog}
  1. 将刚才已经启动的zookeeper容器里的配置拷贝出来一份。看网上的某些教程,都是直接创建一个空的目录,然后创建容器进行挂载,再创建相应的配置文件,但是经我的测试,如果不提前创建好对应的配置文件,在挂载启动时,容器会出错起不来,特别是zoo.cfg配置文件,所以我的解决办法是,提前创建好一个不不需要挂载的zookeeper容器,然后将里面的配置文件直接拷贝出来,然后再创建一个挂载文件的zookeeper容器,作为实际项目中的使用。
docker cp zookeeper:/data /usr/local/dockerv/zookeeper/
docker cp zookeeper:/conf /usr/local/dockerv/zookeeper/
docker cp zookeeper:/datalog /usr/local/dockerv/zookeeper/
  1. 创建并启动zookeeper容器
docker run --name zookeeper_v --privileged=true -p 2181:2181 -d \
-v /usr/local/dockerv/zookeeper/data:/data \
-v /usr/local/dockerv/zookeeper/conf:/conf \
-v /usr/local/dockerv/zookeeper/datalog:/datalog \
zookeeper:3.8.0-temurin
  1. 重复2.4的步骤,查看容器是否启动成功,如果没问题,就可以进行kafka的安装了,因为kafka依赖于zookeeper。

二、安装Kafka

1. 查看Kafka镜像以及版本

与zookeeper镜像的查找以及下载过程基本一致,过程省略。

2. 创建网络

app-tier:网络名称
bridge:网络类型,桥接模式

docker network create app-tier --driver bridge
docker networ ls

app-tier
我对这步的理解是:通过app-tier这个网络,可以实现不同容器的网络通信。

3. 创建zookeeper容器

注意:这里的zookeeper创建方式跟上面的zookeeper创建教程有所区别,首先这里需要将zookeeper加入到app-tier网络中,其次这里也不需要进行外部挂载。由于我在使用官网镜像时需要使用privileged获取宿主机的权限,这里不想再使用官方镜像了,换成bitnami的zookeeper镜像,这样也可以与kafka保持一致(kafka目前没找到官方镜像,排名第一的是bitnami的镜像)。

docker run -d --name zookeeper-server \
--network app-tier \
-e ALLOW_ANONYMOUS_LOGIN=yes \
bitnami/zookeeper:3.8.0

4. 创建kafka服务

  1. 创建kafka容器
docker run --name kafka -p 9092:9092 -d \
--network app-tier \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
bitnami/kafka:3.0

ALLOW_PLAINTEXT_LISTENER:任何人可以访问
KAFKA_BROKER_ID:在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
KAFKA_CFG_ZOOKEEPER_CONNECT:配置zookeeper管理kafka的路径
KAFKA_CFG_LISTENERS:配置kafka的监听端口

通过docker logs -f kafka查看容器启动日志,如果没什么报错信息,基本上创建就创建成功了,或者通过docker ps查看目前正在运行的容器,如果容器创建成功,此时会处于运行状态,通过ps命令是可以找得到该容器的。

  1. 验证kafka的状态
docker exec -it kafka bash
cd /opt/bitnami/kafka/bin/
.kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytest
.kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic mytest

topic
通过创建topic以及查看topic命令,可以看出目前kakfa运行正常!

三、结语

记录一下自己安装创建的过程,以后有新的内容将继续补充!实际上dockerhub上就有相关镜像的安装示例,虽然简单,但是很有参考价值,以后也要养成多看官方文档的习惯!

四、参考文章

Docker 安装Zookeeper
Docker安装Kafka教程(超详细)

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...