当前热度比较高的kafka镜像是wurstmeister/kafka,在dockerhub上有很多的使用次数。我起初很开心最新版支持arm64架构,然后拉到本地用Mac M1跑也很完美
但是!我放到信创鲲鹏的生产环境,导入镜像没问题,但一用docker-compose启动就会报以下错误:
standard_init_linux.go:219: exec user process caused: exec format error
经过各种搜寻资料,大多说是镜像的架构不对,比如把x86的镜像放到了arm环境下跑就会出错。但我确实拉的是arm64的镜像,因为M1环境下跑的很好,也检查了本地镜像的cpu架构无误。
然后又找了一圈别的镜像,感觉不是很好用,就决定研究下这个镜像怎么build的。
找到镜像作者的源码仓库GitHub - wurstmeister/kafka-docker: Dockerfile for Apache Kafka
源码拉到本地,心想先自己根据源码build一个镜像试试,然后就先打了个镜像
本地M1环境跑是ok,而且放到信创环境下竟然神奇般的好了???
什么也没改,就重新打了个镜像而已....
暂时先不管原因了,我本地打好的推到仓库,大家可以取用,或者自行用作者的源码build也可以。
镜像地址:Docker Hub
拉取命令:docker pull qinchz/kafka:2.13-2.8.1
docker-compose使用示例:
version: '2'
services:
zookeeper:
image: zookeeper:3.6.3
volumes:
- /Users/xxx/docker/data/zookeeper/data:/data
ports:
- "2181:2181"
kafka:
image: kafka-2.8.1:2022-1117
depends_on:
- zookeeper
volumes:
- /Users/xxx/docker/data/kafka/kafka-logs:/kafka
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9094:9094"
environment:
- TZ=CST-8
- KAFKA_LOG_DIRS=/kafka/kafka-logs
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
# 非必须,设置自动创建 topic
- KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
- KAFKA_LISTENERS=INSIDE://:9092,OUTSIDE://:9094
- KAFKA_ADVERTISED_LISTENERS=INSIDE://kafka:9092,OUTSIDE://kafka-server:9094
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
- KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
# 非必须,设置对内存
- KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
# 非必须,设置保存180天数据,默认7天
- KAFKA_LOG_RETENTION_HOURS=4320
# manager监控端口
- JMX_PORT=9999
extra_hosts:
- "kafka-local:127.0.0.1"
kafka-manager:
#image: hlebalbau/kafka-manager:3.0.0.5
image: pi4k8s/kafka-manager:1.3.3.23
depends_on:
- zookeeper
- kafka
ports:
- "9011:9000"
environment:
- ZK_HOSTS=zookeeper:2181
- APPLICATION_SECRET=random-secret
- KAFKA_MANAGER_AUTH_ENABLED=true
- KAFKA_MANAGER_USERNAME=admin
- KAFKA_MANAGER_PASSWORD=admin