Doocker部署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
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用 Docker Compose 部署 Kafka 并进行持久时,你可以参考下面的示例配置文件: ```yaml version: '3' services: zookeeper: image: confluentinc/cp-zookeeper:6.2.0 container_name: zookeeper ports: - 2181:2181 volumes: - zookeeper-data:/var/lib/zookeeper/data - zookeeper-logs:/var/lib/zookeeper/logs kafka: image: confluentinc/cp-kafka:6.2.0 container_name: kafka depends_on: - zookeeper ports: - 9092:9092 environment: - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 volumes: - kafka-data:/var/lib/kafka/data volumes: zookeeper-data: driver: local zookeeper-logs: driver: local kafka-data: driver: local ``` 在这个示例中,我们使用了 Confluent Platform 的 Kafka 和 ZooKeeper 镜像。通过 `volumes` 部分,我们将 ZooKeeper 的数据目录 `/var/lib/zookeeper/data` 和日志目录 `/var/lib/zookeeper/logs` ,以及 Kafka 的数据目录 `/var/lib/kafka/data` 挂载到相应的卷中,实现数据的持久。 在环境变量部分,我们配置了 Kafka 的连接字符串 `KAFKA_ZOOKEEPER_CONNECT` 指向 ZooKeeper 容器的地址和端口。 使用以下命令启动 Kafka: ```shell docker-compose up -d ``` 这将启动 ZooKeeper 和 Kafka 容器,并将它们绑定到主机的 2181 和 9092 端口。你可以根据需要修改端口映射。 请注意,这只是一个简单的示例配置文件,你可以根据自己的需求进行修改和扩展。此外,还可以根据需要配置其他 Kafka 和 ZooKeeper 相关的环境变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值