当前位置:   article > 正文

docker学习(一)安装kafka以及构建kafka集群_docker 安装kafka 单机

docker 安装kafka 单机

参考文章:传送门

背景:方便玩kafka,使用docker安装也方便

一、单机kafka(注意访问宿主机有两种方式!!!)

宿主机方式1

1、docker下载zookeeper和kafka

docker pull wurstmeister/zookeeper  
docker pull wurstmeister/kafka  
  • 1
  • 2

2、docker 运行一个zookper容器

docker run -d --name zookeeper_kafka_single -p 2181:2181 -t wurstmeister/zookeeper
  • 1

参数解释

-d:以后台模式运行容器。
--name:为容器指定一个名称,这里是 zookeeper_kafka_single。
-p 2181:2181:将容器内部的 2181 端口映射到主机的 2181 端口,以便外部可以访问。
-t:分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,以便可以在容器中交互式地执行命令。
wurstmeister/zookeeper:要运行的镜像名称。
  • 1
  • 2
  • 3
  • 4
  • 5

3、docker 运行kafka
ip地址通过ifconfig 查找更换(这里的ip是找宿主机的ip,以mac为例)

# 查看mac ip
ifconfig eth0
# mac 精准查找ip
ifconfig en0 | grep inet| awk '{print $2}'
  • 1
  • 2
  • 3
  • 4

#运行kafka

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.124.8:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.8:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
  • 1

参数解释

-d:以后台模式运行容器。
--name:为容器指定一个名称,这里是 kafka。
-p 9092:9092:将容器内部的 9092 端口映射到主机的 9092 端口,以便外部可以访问 Kafka。
-e KAFKA_BROKER_ID=0:设置 Kafka broker 的 ID,这里设置为 0-e KAFKA_ZOOKEEPER_CONNECT=192.168.124.8:2181:指定 ZooKeeper 的连接地址和端口号,这里连接到 IP 地址为 192.168.124.8 的 ZooKeeper 容器,端口号为 2181-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.8:9092:指定 Kafka 的广告监听器地址,这里设置为 PLAINTEXT://192.168.124.8:9092,表示 Kafka 的客户端将使用此地址来连接 Kafka 集群。
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092:指定 Kafka 监听器地址,这里设置为 PLAINTEXT://0.0.0.0:9092,表示 Kafka 监听所有可用的网络接口,以便接受来自任何 IP 地址的连接请求。
wurstmeister/kafka:要运行的镜像名称。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

进入kafka容器

docker exec -it kafka /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
  • 1
  • 2

主题创建

./kafka-topics.sh  --zookeeper 192.168.124.8:2181 --topic message --create --replication-factor 1 --partitions 1 
  • 1

开一个窗口运行生产者

./kafka-console-producer.sh --broker-list 192.168.124.8:9092 --topic message
  • 1

开一个窗口运行消费者

./kafka-console-consumer.sh --bootstrap-server 192.168.124.8:9092 --topic message --from-beginning
  • 1

然后就可以愉快的生产和消费了。

宿主机方式2

即宿主机ip全部用 host.docker.internal替换 这个可以访问宿主机的ip,这样我的mac每次更换ip也不用重新搞了,很方便!!!

# 运行 kafka-1 容器
docker run -d --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
# 创建一个主题
./kafka-topics.sh  --zookeeper host.docker.internal:2181 --topic message --create --replication-factor 1 --partitions 1 
# 生产消息
./kafka-console-producer.sh --broker-list host.docker.internal:9092 --topic message
# 消费消息
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic message --from-beginning
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

二、集群kafka

1、创建kafka-1、kafka-2 两个容器
注意不同之处:端口不一样!!!、KAFKA_BROKER_ID不一样!!!、

docker run -d --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

docker run -d --name kafka-2 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
  • 1
  • 2
  • 3

2、进入到容器中

docker exec -it kafka-2 /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
  • 1
  • 2

3、生产一个topic

./kafka-topics.sh  --zookeeper host.docker.internal:2181 --topic message --create --replication-factor 1 --partitions 1 
  • 1

4、生产者生产、消费者消费

# 9092端口 生产和消费
./kafka-console-producer.sh --broker-list host.docker.internal:9092 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic message --from-beginning

# 9093端口 生产和消费
./kafka-console-producer.sh --broker-list host.docker.internal:9093 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9093 --topic message --from-beginning
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5、命令和在一起

docker run -d --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
docker exec -it kafka-2 /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
./kafka-topics.sh  --zookeeper host.docker.internal:2181 --topic message --create --replication-factor 1 --partitions 1 
./kafka-console-producer.sh --broker-list host.docker.internal:9092 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic message --from-beginning


docker run -d --name kafka-2 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
docker exec -it kafka-2 /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
./kafka-console-producer.sh --broker-list host.docker.internal:9093 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9093 --topic message --from-beginning
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

6、其他命令

# 查看都有哪些 topic
./kafka-topics.sh --zookeeper host.docker.internal:2181  --list
  • 1
  • 2

可以愉快的玩集群了~

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号