Docker容器剛開(kāi)始使用,僅僅只了解一些簡(jiǎn)單命令和原理.很多東西也是從東拼西湊的.主要是記錄下怎么走出坑的.
1.搜索鏡像,包括kafka,zookeeper,還有kafka管理工具
docker search kafka
docker search?zookeeper
docker search?kafka-manager
2.拉取鏡像(根據(jù)排名選擇第一個(gè),雖然不知道為啥,排在第一不是沒(méi)有道理的)
docker pull?wurstmeister/kafka
docker pull?wurstmeister/zookeeper
docker pull?sheepkiller/kafka-manager
3.啟動(dòng)容器
? ? 3.1啟動(dòng)kafka
docker run --name kafka \
-p 9092:9092 \
-e KAFKA_ADVERTISED_HOST_NAME=kafka01 \
-e KAFKA_CREATE_TOPICS="test:1:1" \
-e KAFKA_ZOOKEEPER_CONNECT=服務(wù)器IP:zookeeper端口 \
-d? wurstmeister/kafka?
? ??3.2啟動(dòng)zookeeper?
docker run --name zookeeper \
--restart always \
-p 2181:2181 \
-d wurstmeister/zookeeper
? ? 3.3啟動(dòng)kafka管理工具
docker run -itd \
--restart=always \
--name=kafka-manager \
-p 9000:9000 \
-e ZK_HOSTS="服務(wù)器IP:zookeeper端口" \
sheepkiller/kafka-manager
4.看到容器啟動(dòng)成功,是不是以為大功告成了,你還是太年輕了,測(cè)試下先
docker exec -it kafka容器ID /bin/bash
進(jìn)入容器
? ? 4.1 創(chuàng)建一個(gè)topic
/opt/kafka/bin/kafka-topics.sh --create --zookeeper?服務(wù)器IP:zookeeper端口 --replication-factor 1 --partitions 1 --topic my-test
? ? 4.2 查看topic列表
/opt/kafka/bin/kafka-topics.sh --list --zookeeper 服務(wù)器IP:zookeeper端口
? ? 4.3發(fā)送消息
/opt/kafka/bin/kafka-console-producer.sh --broker-list 服務(wù)器IP:kafka端口?--topic my-test
? ? 4.4接收消息
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 服務(wù)器IP:kafka端口 --topic my-test --from-beginning
一頓操作之后,迷迷糊糊的似乎發(fā)現(xiàn)了什么.關(guān)鍵是service.properties的配置問(wèn)題,然后各種嘗試修改配置
listeners=PLAINTEXT://:9092解開(kāi)注釋改成?listeners=PLAINTEXT://localhost:9092
然后再?lài)L試發(fā)送消息:
?ERROR Error when sending message to topic my-topic with key: null, value: 9 bytes with error: Batch Expired (org.apache.kafka.clients.
producer.internals.ErrorLoggingCallback)
錯(cuò)誤變成了上面這種,繼續(xù)google
把localhost換成ip
換成容器的hostname
嘗試了一天無(wú)果,從入門(mén)到放棄這個(gè)梗告訴我們不要在一顆樹(shù)上吊死
還有一棵樹(shù)沒(méi)試過(guò)?docker-compose
1.拉取鏡像步驟同上
2.創(chuàng)建一個(gè)文件夾,并編寫(xiě)docker-compose.yml文件
version: '3'
services:
? zookeeper:
? ? image: wurstmeister/zookeeper
? ? ports:
? ? ? - "2181:2181"
? kafka:
? ? image: wurstmeister/kafka
? ? depends_on: [ zookeeper ]
? ? ports:
? ? ? - "9092:9092"
? ? environment:
? ? ? KAFKA_ADVERTISED_HOST_NAME: 你的服務(wù)器IP
? ? ? KAFKA_CREATE_TOPICS: "test:1:1"
? ? ? KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
? ? volumes:
? ? ? - /var/run/docker.sock:/var/run/docker.sock
3.在該文件路徑下執(zhí)行打包命令
docker-compose build
4.在該文件路徑下執(zhí)行啟動(dòng)服務(wù)命令
docker-compose up -d