kafka依賴zookeeper,因此需要使用docker同時安裝zookeeper和kafka。 macOS的docker在容器和宿主之間無法通過ip直接通信,因此在安裝的時候需要特殊注意與ip相關的設置。當容器需要訪問宿主ip時,需要使用docker.for.mac.host.internal或者host.docker.internal代替。
zookeeper安裝
拉取zookeeper鏡像
docker pull zookeeper:3.5.9
啟動zookeeper,尋找需要掛載的內容
docker run --name zookeeper3.5.9 -p 2181:2181 --restart always -d zookeeper:3.5.9
停止運行并刪除容器
docker stop zookeeper3.5.9
docker rm zookeeper3.5.9
創建掛載地址
/Users/snowsong/docker/zookeeper/data
/Users/snowsong/docker/zookeeper/conf
/Users/snowsong/docker/zookeeper/logs
在掛載地址conf下創建配置文件zoo.cfg,內容如下
dataDir=/data
clientPort=2181
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181
啟動鏡像
docker run -d --name zookeeper3.5.9 --privileged=true -p 2181:2181 -v /Users/snowsong/docker/zookeeper/data:/data -v /Users/snowsong/docker/zookeeper/conf:/conf -v /Users/snowsong/docker/zookeeper/logs:/datalog zookeeper:3.5.9
zookeeper到此就安裝完畢啦~~~
kafka安裝
拉取鏡像-默認Kafka版本
docker pull wurstmeister/kafka
啟動鏡像
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
- -d設置后臺運行
- –name 指定容器別名
- -p 2181:2181綁定容器端口到宿主端口
- -e參數可以設置docker容器內環境變量:
- KAFKA_BROKER_ID=0 在kafka集群中,每個kafka都有一個BROKER_ID來區分自己
- KAFKA_ZOOKEEPER_CONNECT={host-ip}:{zookeeper-port}/kafka 配置zookeeper管理kafka的路徑
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://{host-ip}:9092 把kafka的地址端口注冊給zookeeper
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 kafka監聽地址
如果失敗了則刪除鏡像重新上傳,刪除的shell語句為:
docker rm kafka
測試kafka生產和消費
查看鏡像信息及地址;
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | sed 's#^/##'
生產測試消息
echo "test-message" | docker exec -i kafka /opt/kafka/bin/kafka-console-producer.sh \--broker-list 172.17.0.3:9092 \--topic test-topic
消費測試消息
docker exec kafka /opt/kafka/bin/kafka-console-consumer.sh \--bootstrap-server 172.17.0.3:9092 \--topic test-topic \--from-beginning