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