MacOs下使用 Docker 安装Kafka

记录一下在mac下安装kafka的过程,可以给大家一个参考,避免踩坑。

由于kafka依赖zookeeper,因此需要使用 docker 同时安装zookeeper和 kafka。

坑:由于 macOS 的 docker 底层实现的不同,网上的很多教程放在 macOS 中并不能成功运行,主要原因是 macOS 的 docker 在容器和宿主之间无法通过 ip 直接通信。因此在安装的时候需要特殊注意与 ip 相关的设置,当容器需要访问宿主ip时,需要使用docker.for.mac.host.internal或者host.docker.internal代替。

第一步 下载镜像

这里我们默认选择下的是排名靠前的镜像:

docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka

下载完成后使用docker images来验证ZK和Kafka镜像是否下载成功:

第二步 使用Docker启动Kafka
1、启动 zookeeper
docker run -d --name zookeeper -p 2181:2181 wurstmeister/zookeeper
  • -d 参数设置后台运行
  • –name zookeeper 参数指定容器别名
  • -p 2181:2181 参数绑定容器端口到宿主端口
2、启动 kafka

注意,kafka 依赖 zookeeper,启动 kafka 前需要先启动 zookeeper。
以下配置默认 kafka 端口配置在 9092 端口。

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.100:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.100:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
  • -d 参数指定容器后台运行
  • –name kafka 参数指定容器别名
  • -p 参数指定端口号
  • -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

比如我的电脑是 mac,在 host-ip 这块就不能填本机 ip(windows 和 linux 可以),需要填docker.for.mac.host.internalzookeeper 端口启动在2181,kafka 即将启动在9092,那么我的命令是这样的

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=docker.for.mac.host.internal:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://docker.for.mac.host.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
测试功能是否正常
测试 kafka 生产与消费

进入 kafka 容器

docker exec -it kafka bash

进入 kafka 容器中的脚本目录
进入 kafka 的脚本目录,其中kafka_2.12-2.5.0可能会随着版本而变化数字。

cd /opt/kafka_2.12-2.5.0/bin

1、启动 kafka 生产者
运行 kafka 生产者发送消息,看到出现了个对话提示的小**>**就可以发送消息了,不过不要着急,先把消费者启动了。

./kafka-console-producer.sh --broker-list localhost:9092 --topic first-topic

2、启动 kafka 消费者
另起一个终端,进入 kafka 容器,进入/opt/kafka_2.12-2.5.0/bin目录,运行 kafka 消费者接收消息

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first-topic --from-beginning

在生产者中发送Hello,消费者中应该能够收到Hello。

参考文章:https://segmentfault.com/a/1190000022727674

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
macOS使用Docker有几种选择。一种选择是使用Docker Desktop,它是官方提供的Docker解决方案。你可以下载Docker.dmg文件,双击安装,然后在应用程序中找到Docker图标并点击运行。启动Docker时可能需要输入macOS的登录密码。你可以通过命令行检查安装后的Docker版本。\[1\] 然而,根据一些用户的反馈,Docker Desktop在mac上可能存在一些问题,比如安装包体积大、UI卡顿、启动速度慢等。因此,如果你是重度使用Docker并且有定制化需求的用户,推荐使用Lima虚拟机。Lima支持多种操作系统,并且官方提供了许多样例模板,非常适合重度容器使用者。\[2\] 另外,还有一种选择是使用Colima方案。Colima相对于Docker Desktop来说还不太成熟,适合轻度使用Docker的用户。\[2\] 综上所述,对于macOS使用Docker,你可以选择Docker Desktop、Lima虚拟机或Colima方案,具体选择取决于你的使用需求和个人偏好。 #### 引用[.reference_title] - *1* [MacOS Docker 安装配置及基本使用](https://blog.csdn.net/u011019141/article/details/120762431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Mac上Docker使用](https://blog.csdn.net/yaxuan88521/article/details/125440223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值