
cfei/kafka镜像是一个预配置的Apache Kafka broker Docker镜像,用于快速部署Kafka服务。该镜像依赖Zookeeper集群(可使用https://hub.docker.com/repository/docker/cfei/zookeeper%E9%95%9C%E5%83%8F%EF%BC%89%EF%BC%8C%E6%94%AF%E6%8C%81%E5%A4%9A%E7%A7%8D%E7%BD%91%E7%BB%9C%E9%85%8D%E7%BD%AE%E3%80%81%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96%E5%8F%8A%E5%AE%89%E5%85%A8%E7%89%B9%E6%80%A7%EF%BC%88%E5%A6%82SSL/TLS%E3%80%81Kerberos%E8%AE%A4%E8%AF%81%E3%80%81ACL%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%EF%BC%89%EF%BC%8C%E9%80%82%E7%94%A8%E4%BA%8E%E5%BC%80%E5%8F%91%E3%80%81%E6%B5%8B%E8%AF%95%E5%8F%8A%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E7%9A%84%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E9%83%A8%E7%BD%B2%E3%80%82
Kafka运行依赖Zookeeper,需先部署至少一个Zookeeper节点。
单节点Kafka部署(无SSL)
yamlversion: "3" services: kafka1: image: cfei/kafka container_name: kafka restart: always ports: - 9092:9092 # 客户端连接端口 - 9093:9093 # broker间通信端口 volumes: - ./data:/data/kafka # 数据持久化目录 environment: KAFKA_BROKER_ID: 1 # 集群中唯一的broker ID KAFKA_ZOOKEEPER_CONNECT: <<zookeeper1_ip>>:2181,<<zookeeper2_ip>>:2181,<<zookeeper3_ip>>:2181 # Zookeeper集群地址 KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL # broker间通信监听器名称 KAFKA_ADVERTISED_LISTENERS: INTERNAL://<<server_ip>>:9093,EXTERNAL://<<server_ip>>:9092 # 对外公告的监听器 KAFKA_LISTENERS: INTERNAL://0.0.0.0:9093,EXTERNAL://0.0.0.0:9092 # 监听地址 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2 # 偏移量主题副本因子 KAFKA_MIN_INSYNC_REPLICAS: 2 # 最小同步副本数 KAFKA_RETENTION_HOURS: 336 # 数据保留时间(小时) KAFKA_HEAP_OPTS: "-Xmx8G -Xms4G" # JVM堆配置
本地快速启动(Zookeeper + Kafka)
yamlversion: "3" services: zoo: image: cfei/zookeeper container_name: zookeeper restart: always ports: - 2181:2181 - 2888:2888 - 3888:3888 environment: ZOO_ID: 1 ZOO_PORT: 2181 kafka1: image: cfei/kafka container_name: kafka restart: always ports: - 9092:9092 - 9093:9093 volumes: - ./data:/data/kafka environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zoo:2181 # 连接本地Zookeeper服务 KAFKA_ADVERTISED_LISTENERS: INTERNAL://localhost:9093,EXTERNAL://localhost:9092 KAFKA_LISTENERS: INTERNAL://0.0.0.0:9093,EXTERNAL://0.0.0.0:9092 depends_on: - zoo # 依赖Zookeeper启动
| 环境变量 | 说明 |
|---|---|
KAFKA_BROKER_ID | 集群中唯一的broker ID,永久且唯一 |
KAFKA_ZOOKEEPER_CONNECT | Zookeeper连接地址列表(逗号分隔),Kafka将连接第一个可用节点 |
KAFKA_ADVERTISED_LISTENERS | 对外公告的监听器列表(逗号分隔),供客户端和其他broker发现当前节点。至少需配置两个监听器(如内部通信和客户端连接)。注意:不要使用55555端口(容器内部保留端口) |
KAFKA_LISTENERS | 监听地址列表(逗号分隔),支持通配符IP。至少需配置两个监听器。注意:不要使用55555端口 |
| 环境变量 | 说明 | 默认值 |
|---|---|---|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR | 消费者偏移量主题的副本因子,建议至少为2 | 1 |
KAFKA_MIN_INSYNC_REPLICAS | 写入操作需确认的最小副本数,建议至少为2 | 1 |
KAFKA_RETENTION_HOURS | 日志文件保留时间(小时) | 168(7天) |
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP | 监听器名称与安全协议的映射,SSL配置时需设置 | INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,INTERNAL_SSL:SSL,EXTERNAL_SSL:SSL,SSL:SSL,PLAINTEXT:PLAINTEXT |
KAFKA_INTER_BROKER_LISTENER_NAME | broker间通信使用的监听器名称 | INTERNAL |
KAFKA_DEFAULT_REPLICATION_FACTOR | 自动创建主题的默认副本因子 | 1 |
KAFKA_HEAP_OPTS | JVM堆大小配置 | -Xmx256M |
KAFKA_JVM_PERFORMANCE_OPTS | JVM性能参数 | -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true |
| 挂载路径 | 用途 |
|---|---|
/data/kafka | Kafka checkpoint数据存储目录,容器重建时需保留 |
/opt/kafka/logs | Kafka日志目录,用于调试 |
/ssl/ | SSL配置目录,挂载自定义keystore和truststore时使用 |
/sasl/kafka.service.keytab | Kerberos密钥表文件,Kerberos认证时需挂载 |
docker-compose示例(启用SSL)
yamlversion: "3" services: kafka: image: cfei/kafka ports: - 9092:9092 - 9093:9093 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: <<zookeeper1_ip>>:2181,<<zookeeper2_ip>>:2181,<<zookeeper3_ip>>:2181 KAFKA_INTER_BROKER_LISTENER_NAME: SSL # broker间通信使用SSL KAFKA_LISTENERS: SSL://0.0.0.0:9092,EXTERNAL_SSL://0.0.0.0:9093 # SSL监听器 KAFKA_ADVERTISED_LISTENERS: SSL://<<server_ip>>:9092,EXTERNAL_SSL://<<server_ip>>:9093 KAFKA_TLS_SERVER_DNS_HOSTNAME: <<server_FQDN>> # 服务器DNS名称(不可为IP) KAFKA_CERTIFICATE_AUTHORITY_URL: ca:5000 # 证书颁发机构URL depends_on: - ca ca: image: cfei/certificate_authority volumes: - ./cert-auth:/ssl/ # 证书存储目录
带Kerberos API的配置(Zookeeper无Kerberos)
yamlversion: "3" services: kafka: image: cfei/kafka ports: - 9092:9092 - 9093:9093 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: <<zookeeper1_ip>>:2181,<<zookeeper2_ip>>:2181,<<zookeeper3_ip>>:2181 KAFKA_LISTENERS: INTERNAL_SASL_PLAINTEXT://0.0.0.0:9092,SASL_PLAINTEXT://0.0.0.0:9093 # SASL监听器 KAFKA_ADVERTISED_LISTENERS: INTERNAL_SASL_PLAINTEXT://<<server_ip>>:9092,SASL_PLAINTEXT://<<server_ip>>:9093 KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL_SASL_PLAINTEXT # 内部通信使用SASL KAFKA_AUTHENTICATION: KERBEROS # 启用Kerberos认证 KERBEROS_PUBLIC_URL: <<kerberos_public_dns>> # Kerberos服务器DNS KERBEROS_REALM: KAFKA.SECURE # Kerberos领域 KERBEROS_API_URL: "<<kerberos_api_public_dns>>/<<get_keytab_endpoint_route>>" # 获取密钥表的API地址 KERBEROS_API_KAFKA_USERNAME: <<kerberos_kafka_principal_name>> # Kafka主体名称 KERBEROS_API_KAFKA_PASSWORD: <<kerberos_api_kafka_password>> # API访问密码
自定义密钥表的Kerberos配置
yamlversion: "3" services: kafka: image: cfei/kafka ports: - 9092:9092 - 9093:9093 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: <<zookeeper1_ip>>:2181,<<zookeeper2_ip>>:2181,<<zookeeper3_ip>>:2181 KAFKA_LISTENERS: INTERNAL_SASL_PLAINTEXT://0.0.0.0:9092,SASL_PLAINTEXT://0.0.0.0:9093 KAFKA_ADVERTISED_LISTENERS: INTERNAL_SASL_PLAINTEXT://<<server_ip>>:9092,SASL_PLAINTEXT://<<server_ip>>:9093 KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL_SASL_PLAINTEXT KAFKA_AUTHENTICATION: KERBEROS KERBEROS_PUBLIC_URL: <<kerberos_public_dns>> KERBEROS_REALM: <<kerberos_realm>> KAFKA_KERBEROS_PRINCIPAL: <<kafka_kerberos_principal_name>>@<<kerberos_realm>> # Kafka主体 ZOOKEEPER_KERBEROS_PRINCIPAL: <<zookeeper_kerberos_principal_name>>@<<kerberos_realm>> # Zookeeper主体 volumes: - ./kafka.service.keytab:/sasl/kafka.service.keytab # 挂载自定义密钥表
需先配置Kerberos认证,再启用ACL:
yamlversion: "3" services: kafka: image: cfei/kafka ports: - 9092:9092 - 9093:9093 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: <<zookeeper1_ip>>:2181,<<zookeeper2_ip>>:2181,<<zookeeper3_ip>>:2181 KAFKA_LISTENERS: INTERNAL_SASL_PLAINTEXT://0.0.0.0:9092,SASL_PLAINTEXT://0.0.0.0:9093 KAFKA_ADVERTISED_LISTENERS: INTERNAL_SASL_PLAINTEXT://<<server_ip>>:9092,SASL_PLAINTEXT://<<server_ip>>:9093 KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL_SASL_PLAINTEXT KAFKA_AUTHENTICATION: KERBEROS KERBEROS_PUBLIC_URL: <<kerberos_public_dns>> KERBEROS_REALM: <<kerberos_realm>> KERBEROS_API_URL: "<<kerberos_api_public_dns>>/<<get_keytab_endpoint_route>>" KERBEROS_API_KAFKA_USERNAME: <<kerberos_kafka_principal_name>> KERBEROS_API_KAFKA_PASSWORD: <<kerberos_api_kafka_password>> KERBEROS_API_ZOOKEEPER_USERNAME: <<kerberos_zookeeper_principal_name>> KERBEROS_API_ZOOKEEPER_PASSWORD: <<kerberos_api_zookeeper_password>> KAFKA_ACL_ENABLE: "true" # 启用ACL KAFKA_ACL_SUPER_USERS: User:kafka # 超级用户(拥有所有权限) KAFKA_ZOOKEEPER_SET_ACL: "true" # 保护Zookeeper中的Kafka数据
以下是 cfei/kafka 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务