基于docker搭建kafka

步骤1:拉取镜像

在docker上安装kafka需要先安装zookeeper,我们可以使用docker pull先把zookeeper和kafka的镜像拉取下来

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

镜像拉取到后可以根据实际使用修改tag,例如:

docker tag wurstmeister/zookeeper:latest registry.test.com/library/zookeeper:latest
docker tag wurstmeister/kafka:latest registry.test.com/library/kafka:latest

可以通过如下docker images |grep -E "zookeeper|kafka"查看修改tag后的镜像

docker images |grep -E "zookeeper|kafka"

步骤2:运行zookeeper

docker run -d --name zookeeper -p 2181:2181 -t registry.test.com/library/zookeeper

步骤3:运行kafka

# 10.160.32.28为宿主机IP
# KAFKA_ZOOKEEPER_CONNECT 需要修改成zookeeper所在容器IP,容器之间是可以通过IP访问的,但是不能填写成虚拟IP
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.4:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime -t registry.cmcc.com/library/kafka:latest

KAFKA_ZOOKEEPER_CONNECT对应的Zookeper所在容器IP

步骤4:创建topic

# 查询kafka容器ID
docker ps |grep kafka
# 进入kafka容器
docker exec -it 53cc0e000953 /bin/sh
# 创建topic mykafkadk
/opt/kafka/bin/kafka-topics.sh --zookeeper 10.160.32.28:2181 --create --replication-factor 1 --partitions 1 --topic mykafkadk

步骤5:查询topic列表

/opt/kafka/bin/kafka-topics.sh --zookeeper 172.17.0.4:2181 --list

步骤6:发送消息

/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic mykafkadk

步骤7:消费消息

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mykafkadk --from-beginning

若是发送消息报错,打印一堆日志需要检查步骤3运行kafka时配置参数是否正确,保存在/opt/kafka/config/server.properties中,若是有问题可以进行修改,docker容器中不能使用vi或vim命令直接编辑,需要使用sed命令进行修改或是将文件拷贝到容器外,修改好后再拷贝进容器

# 从容器中cp到容器外
docker cp 容器ID:/opt/kafka/config/server.properties /root/tmp

# 从容器外cp道容器中
docker cp /root/tmp/server.properties 容器ID:/opt/kafka/config/server.properties

完成后检查容器中文件的属组和权限是否正确

容器中重启kafka的命令

/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

运行安装第二个kafka时需要修改如下参数:

1) name

2} 端口号

3)KAFKA_BROKER_ID

docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=10.160.32.28:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.160.32.28:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -v /etc/localtime:/etc/localtime -t registry.cmcc.com/library/kafka:latest

创建两个kafka公用的topic:

/opt/kafka/bin/kafka-console-producer.sh --broker-list 10.160.32.28:9093 --topic kafkatesttopic1

发送消息:

/opt/kafka/bin/kafka-console-producer.sh --broker-list 10.160.32.28:9093 --topic kafkatesttopic1

消费消息:

/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.160.32.28:9093 --topic kafkatesttopic1 --from-beginning

你可能感兴趣的:(kafka,docker,zookeeper)