Docker自定义network搭建kafka

         昨天在搞spring-cloud-bus 想到用kafka实现消息总线,然后就用docker起了一个zookeeper和kafka,本人docker版本是17.06,采用机器是Ubuntu18版本,详细安装kafka的过程如下。

1.docker  search kafka  我们选择星星最多的 wurstmeister/kafka

2. 下载zookeeper和kafka的镜像

docker pull wurstmeister/zookeeper

docker pull wurstmeister/kafka

3.两个镜像下载好以后,我们给它重命名,方便操作。

a)镜像重命名 docker tag [oldName]:[tag] [newName]:[tag]

docker tag wurstmeister/zookeeper:latest zookeeper latest

docker tag wurstmeister/kafka:latest kafka latest

b)镜像的映射tag 删除 docker rmi -f [Name]:[Tag]

这里我们删除旧版的镜像。

docker rmi -f  wurstmeister/zookeeper:latest

docker rmi -f  wurstmeister/kafka:latest

4.由于kafka要和zookeeper相互通信,这里我们自己搭建一个bridge网络

docker network create app

5.查看新建的网络

docker  network list

 app是我们刚刚创建的network   其中bridge,host,none是默认的。

6.查看网络的详细信息

docker network inspect app

其中Containers中有两个容器,zookeeper和kafka,这个是我搭建完毕以后加入的,新创建的名字叫app的network中的Containers为空 

7.启动zookeeper  --net=app 指定加入自定的app网络 -v挂在docker容器的zookeeper文件到 zoolog -t可以替换为-d 这样如果看log的话 还需要 docker logs zookeeper

docker run --net=app --name zookeeper -p 2181:2181 -v /home/qiwenshuai/kafka/zoolog:/opt/zookeeper/data -t zookeeper

8. 启动kafka 指定network网络, 注册到zookeeper, 注意加入同一网络的容器,自己嵌套一个DNS解析,可以解析到其他容器,并且端口全部相互暴露。

docker run --net=app --name kafka -p 9092:9092 \

--link zookeeper \

--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \

--env KAFKA_ADVERTISED_HOST_NAME=127.0.0.1 \

--env KAFKA_ADVERTISED_PORT=9092 \

-t kafka

9.测试---进入kafka内部,自定义生产者和消费者进行测试

docker exec -it kafka /bin/bash

 a)kafka在opt 目录下

cd /opt/kafka_2.12-0.11.0.1/

b)调用kafka-topics.sh创建一个mykafka的topic

bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 1 --topic mykafka

c)调用kafka-console-producer.sh运行一个生产者

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

d)启动另一个窗口,按照上边的步骤启动kafka容器的命令行,执行如下消费者命令

bin/kafka-console-consumer.sh --zookeeper zookeeper:2181 --topic mykafka --from-beginning

在生产者窗口发送一条命令,查看消费者端口是否接到命令一些命令

10 附录一些kafka查看命令

a)查看kafka topic列表,使用--list参数

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

b)查看kafka特定topic的详情,使用--topic与--describe参数

bin/kafka-topics.sh --zookeeper zookeeper:2181 --topic mykafka --describe

c)查看consumer group列表,使用--list参数

bin/kafka-consumer-groups.sh --zookeeper zookeeper:2181 --list

d)查看特定consumer group 详情,使用--group与--describe参数

bin/kafka-consumer-groups.sh --zookeeper zookeeper:2181 --group console-consumer-15480 --describe

猜你喜欢

转载自blog.csdn.net/gpdsjqws/article/details/81324375