
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务