Mac m1 通过docker镜像安装kafka

kafka依赖zookeeper,因此需要使用docker同时安装zookeeper和kafka。 macOS的docker在容器和宿主之间无法通过ip直接通信,因此在安装的时候需要特殊注意与ip相关的设置。当容器需要访问宿主ip时,需要使用docker.for.mac.host.internal或者host.docker.internal代替。

zookeeper安装

拉取zookeeper镜像

powershell 复制代码
docker pull zookeeper:3.5.9

启动zookeeper,寻找需要挂载的内容

powershell 复制代码
docker run --name zookeeper3.5.9 -p 2181:2181 --restart always -d zookeeper:3.5.9

停止运行并删除容器

powershell 复制代码
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,内容如下

powershell 复制代码
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

启动镜像

powershell 复制代码
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版本

powershell 复制代码
docker pull wurstmeister/kafka

启动镜像

powershell 复制代码
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语句为:

powershell 复制代码
docker rm kafka

测试kafka生产和消费

查看镜像信息及地址;

powershell 复制代码
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | sed 's#^/##'


生产测试消息

powershell 复制代码
echo "test-message" | docker exec -i kafka /opt/kafka/bin/kafka-console-producer.sh \
  --broker-list 172.17.0.3:9092 \
  --topic test-topic

消费测试消息

powershell 复制代码
docker exec kafka /opt/kafka/bin/kafka-console-consumer.sh \
  --bootstrap-server 172.17.0.3:9092 \
  --topic test-topic \
  --from-beginning
相关推荐
dyj0958 小时前
Dify - (一)、本地部署Dify+聊天助手/Agent
人工智能·docker·容器
木雷坞16 小时前
视觉算法环境 Docker 镜像拉取失败排查
运维·人工智能·docker·容器
瀚高PG实验室16 小时前
安全版V4.5版本docker容器license过期问题处理步骤
安全·docker·容器·瀚高数据库
Cho1yon16 小时前
【第15期:车机CarPlay使用中语音唤醒失效问题分析与解决方案】
macos·车载系统·objective-c·cocoa
冷小鱼16 小时前
消息队列(MQ)技术全景科普:从选型到AI+未来
人工智能·kafka·rabbitmq·rocketmq·mq·pulsar
java_logo17 小时前
SiYuan 思源笔记 Docker 部署终极指南:Windows+Linux 双平台
windows·笔记·docker·思源笔记·思源笔记部署·docker部署思源笔记·思源笔记文档
Hello.Reader17 小时前
Ubuntu 上正确安装 Kali 虚拟机、Docker 与 kail 工具指南
linux·ubuntu·docker
筱_智18 小时前
Docker学习-超详细-通俗易懂(从入门到精通)
学习·docker·容器
EAIReport18 小时前
Docker与K8s核心解析:共同性、差异性及实战适配指南
docker·容器·kubernetes