MacOS M1上的Docker kafka问题停留在配置上
Posted
技术标签:
【中文标题】MacOS M1上的Docker kafka问题停留在配置上【英文标题】:Docker kafka on MacOS M1 Issues stuck on configuring 【发布时间】:2021-07-14 19:34:32 【问题描述】:我使用 macOS M1 Big Sur 11.2.3,但我的 kafka 无法正常运行并且无法创建/列出主题。我不知道是不是因为操作系统,但是kafka的日志只是这样的:
docker-compose logs
list the topics logs
这是我的 docker compose:
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
hostname: zookeeper
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
networks:
- kafka_net
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- 9092:9092
expose:
- 29092
depends_on:
- zookeeper
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ADVERTISED_PORT: 9092
KAFKA_LISTENERS: INSIDE://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:29092,OUTSIDE://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 1
restart: always
networks:
- kafka_net
networks:
kafka_net:
driver: bridge
我认为 kafka 尚未运行,因此我无法列出/创建主题。你们对此有什么想法吗?我已经搜索过这方面的可能性,但我仍然没有解决问题。谢谢
【问题讨论】:
【参考方案1】:为了在 mac m1 上的 docker 中启动 kafka,我会做接下来的事情:
-
克隆 kafka 存储库并在我的 macbook pro m1 上构建 (./gradlew clean releaseTarGz)
使用下一个结构创建 docker-compose 项目目录
-
配置 server.properties 文件(root dir/kafka_m1/kafka/config/server.properties)。主要参数:
zookeeper.connect=zookeeper:2181
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://127.0.0.1:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT
-
kafka 的 Dockerfile(openjdk:15.0.2-jdk 是为 m1 构建的):
FROM openjdk:15.0.2-jdk
WORKDIR /
COPY . /
EXPOSE 9092
EXPOSE 8092
EXPOSE 9092
EXPOSE 10092
EXPOSE 11092
EXPOSE 12092
ENTRYPOINT [ "/kafka/bin/kafka-server-start.sh", "/kafka/config/server.properties" ]
-
docker-compose.yml(我选择 zookeeper:3.7.0 因为它有 arm build):
version: "2"
services:
zookeeper:
image: zookeeper:3.7.0
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
build: ./kafka_m1
ports:
- "127.0.0.1:9092:9092"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
-
启动 docker-compose 并构建 kafka_m1 映像。
在 docker 中运行本地 kafka 的快速收据
【讨论】:
有没有人试过这个,我现在也有同样的情况?【参考方案2】:docker-compose.yaml
文件没问题,你只需要在 kafka 容器中执行以下命令:
-
kafka-topics.sh --zookeeper zookeeper:2181 --topic test --create --partitions 3 --replication-factor 1
kafka-topics.sh --zookeeper zookeeper:2181 --list
顺便说一句:您可以使用以下命令进入 kafka 容器:docker exec -it CONTAINER_ID bash
【讨论】:
以上是关于MacOS M1上的Docker kafka问题停留在配置上的主要内容,如果未能解决你的问题,请参考以下文章
带有 ARM CPU M1 的 macOS 上的 Android Studio/Emulator
M1 macOS Mojave 全局 bin 文件夹权限错误上的 npm
Docker-compose 在 M1 mac 上的 VM (Parallels) 中