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