Doocker部署Kafka,并挂载持久化存储
Docker部署kafka,并挂载持久化目录。
1.拉取镜像
在线拉取镜像
docker pull bitnami/kafka:latest
docker pull bitnami/zookeeper:latest
服务器无网情况下
第一步:可以找一台有网的服务器上在线拉取镜像
docker pull bitnami/kafka:latest
docker pull bitnami/zookeeper:latest
第二步:在有网的服务器上将镜像打包到服务器本地
docker save -o /home/Kafka.tar bitnami/kafka
docker save -o /home/zookeeper.tar bitnami/zookeeper
第三步:想办法拷贝到无网的服务器/home目录下即可,然后在无网的服务器上进行拉取本地镜像
docker load -i /home/kafka.tar
docker load -i /home/zookeeper.tar
2.创建一个Docker网络使
命令:docker network create kafka-internet --driver bridge
解析:
kafka-internet
自定义的虚拟网络名称,可按照自己喜好进行设定
--driver bridge
Bridge驱动创建一个虚拟的网络桥接接口,并为每个容器分配一个IP地址。容器可以通过桥接接口进行通信,也可以通过主机网络进行外部通信。这使得容器能够在同一主机上相互通信,或者与外部网络进行互联。
创建Docker网络原因
同一网络让zookeeper容器与kafka容器之间能互相通信,Kafka使用Zookeeper来实现分布式协调和管理功能
3.启动zookeeper
第一步:创建zookeeper数据持久化目录
mkdir -p /home/zookeeper/data/
第二步:赋予目录权限
chmod 777 /home/zookeeper/data/
第三步:启动镜像
docker run -d -p 2181:2181 --name zookeeper --network kafka-internet --restart=always -e ALLOW_ANONYMOUS_LOGIN=yes -v /home/zookeeper/data:/bitnami/zookeeper/data bitnami/zookeeper:latest
解析:
--network kafka-internet
使用一个名称kafka-internet的Docker网络
--restart=always
容器跟随Docker服务启动而自启
-e ALLOW_ANONYMOUS_LOGIN=yes
这个语句可以允许匿名登录到Zookeeper,但我尝试去掉这个语句,会出现容器无法启动成功,查询资料有部分说是bitnami/zookeeper:latest版本包必须要匿名登录设置才能正常启动容器。
-v /home/zookeeper/data:/bitnami/zookeeper/data
挂载zookeeper的存储目录,持久化数据
4.启动Kafka
第一步:创建持久化目录
mkdir -p /home/kafka/data/
第二步:赋予目录权限
chmod 777 /home/kafka/data/
第三步:启动镜像
docker run -d --name kafka --network kafka-internet --restart=always -p 9092:9092 -e KAFKA_LISTENERS=PLAINTEXT://:9092 -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,SSL:SSL -e KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://10.10.10.1:9092 -v /home/kafka/data:/bitnami/kafka/data bitnami/kafka:latest
5.验证
第一步:进入kafka容器内部
docker exec -it kafka bash
第二步:创建一个叫test-topic主题
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic
第三步:发布信息
echo "Hello, Kafka!" | kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
第四步:消费信息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
更多推荐
所有评论(0)