
针对 Kafka 应用的 Docker 镜像,用于提供 Kafka 服务。
详细信息可参照:官方文档
!logo
版本信息:
镜像信息
后续相关命令行默认使用
[Docker Hub](https://hub.docker.com)镜像服务器做说明
Docker 快速启动命令:
shell$ docker run -d colovu/kafka:2.6
Docker-Compose 快速启动命令:
shell# 从 Gitee 下载 Compose 文件 $ curl -sSL -o https://gitee.com/colovu/docker-kafka/raw/master/docker-compose.yml # 从 Github 下载 Compose 文件 $ curl -sSL -o https://raw.githubusercontent.com/colovu/docker-kafka/master/docker-compose.yml # 创建并启动容器 $ docker-compose up -d
镜像默认提供以下数据卷定义,默认数据分别存储在自动生成的应用名对应kafka子目录中:
shell/var/log # 日志输出,应用日志输出,非数据日志输出 /srv/conf # 配置文件 /srv/cert # 证书文件目录 /srv/datalog # 数据操作日志文件
如果需要持久化存储相应数据,需要在宿主机建立本地目录,并在使用镜像初始化容器时进行映射。宿主机相关的目录中如果不存在对应应用 Kafka 的子目录或相应数据文件,则容器会在初始化时创建相应目录及文件。
在初始化 Kafka 容器时,如果配置文件不存在,可以在命令行中使用相应参数对默认参数进行修改。类似命令如下:
shell$ docker run -d -e "KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181" --name kafka1 colovu/kafka:2.6
常使用的环境变量主要包括:
KAFKA_ZOOKEEPER_CONNECT:默认值:localhost:2181。设置 Zookeeper 链接地址。可以为多个 Zookeeper 服务器地址,使用逗号分隔
KAFKA_ZOOKEEPER_USER:默认值:无。设置 Zookeeper 链接用户名,根据实际情况设置
KAFKA_ZOOKEEPER_PASSWORD:默认值:无。设置 Zookeeper 链接用户密码,根据实际情况设置
KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS:默认值:6000。设置 Zookeeper 链接超时时间
KAFKA_LISTENERS:默认值:INTERNAL://:9092。设置默认的监听器
KAFKA_ADVERTISED_LISTENERS:默认值:INTERNAL://:9092。设置发布 Broker 信息至 Zookeeper 的监听器
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:默认值:INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT。设置监听器加密方式。
以 Key/Value 形式配置的:
- Key 为 Listener 的名称
- Value 取值范围为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL
如果没有必要,可选配置参数可以不用定义,直接使用对应的默认值,主要包括:
使用 Kafka 镜像,可以很容易的建立一个 Kafka 集群。针对集群模式,有以下参数可以配置:
KAFKA_BROKER_ID_COMMAND: "hostname | awk -F'-' '{print $$2}'"
在未定义 Broker ID 时,会自动生成一个 ID 供容器使用,详细参见文档。当使用这种方式时,可以支持容器的扩容或缩容。使用时,建议同时使用 Docker Compose的
--no-recreate参数,保证容器的 ID 及容器名不会重复创建。
使用证书加密传输时,相关配置参数如下:
/srv/cert/kafka目录/srv/cert/kafka目录Kafka 镜像默认禁用了无密码访问功能,在实际生产环境中建议使用用户名及密码控制访问;如果为了测试需要,可以使用以下环境变量启用无密码访问功能:
shellALLOW_PLAINTEXT_LISTENER=yes
如果需要配置访问认证,需要配置相应的监听器参数,相关监听器主要有:
以下为一个客户端访问使用SASL_SSL方式,Broker 访问使用SSL方式,相应的配置参数:
shellKAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SSL,CLIENT:SASL_SSL KAFKA_LISTENERS=INTERNAL://:9093,CLIENT://:9092 KAFKA_ADVERTISED_LISTENERS=INTERNAL://:9093,CLIENT://kafka:9092 KAFKA_CLIENT_USER=user KAFKA_CLIENT_PASSWORD=password
在上述配置中,必须使用相应的证书文件。相应的证书文件需要放在/srv/cert/kafka目录中(或主机映射数据卷时使用的目录中)。如果证书使用了密码保护,需要同时使用以下环境变量指定对应的密码:
shellKAFKA_CERTIFICATE_PASSWORD=myCertificatePassword
以下脚本可用于生成JKS证书文件:
建议:
kafka.example.com。这样,在后续针对问题 "What is your first and last name?",可以输入同样的名字。针对如何使用 JKS 证书(同时使用了 certificatePassword123密码保护)配置容器,以及如何配置容器 hostname ,举例如下:
yamlversion: '3.6' services: zookeeper: image: 'colovu/zookeeper:3.6' ports: - '2181:2181' environment: - ZOO_ENABLE_AUTH=yes - ZOO_SERVER_USERS=kafka - ZOO_SERVER_PASSWORDS=kafka_password kafka: image: 'colovu/kafka:2.6' hostname: kafka.example.com ports: - '9092' environment: - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SSL,CLIENT:SASL_SSL - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 - KAFKA_LISTENERS=INTERNAL://:9093,CLIENT://:9092 - KAFKA_ADVERTISED_LISTENERS=INTERNAL://kafka.example.com:9093,CLIENT://kafka.example.com:9092 - KAFKA_ZOOKEEPER_USER=kafka - KAFKA_ZOOKEEPER_PASSWORD=kafka_password - KAFKA_CLIENT_USER=user - KAFKA_CLIENT_PASSWORD=password - KAFKA_CERTIFICATE_PASSWORD=certificatePassword123 volumes: - './kafka.keystore.jks:/srv/cert/kafka/kafka.keystore.jks:ro' - './kafka.truststore.jks:/srv/cert/kafka/kafka.truststore.jks:ro'
生产者与消费者在访问客户端使用数据时,需要同样提供对应的用户名及密码。
生产者使用加密方式访问时,在容器中执行如下命令:
shellexport KAFKA_OPTS="-Djava.security.auth.login.config=/srv/conf/kafka/kafka_jaas.conf" kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test --producer.config /srv/conf/kafka/producer.properties
消费者使用加密方式访问时,在容器中执行如下命令:
shellexport KAFKA_OPTS="-Djava.security.auth.login.config=/srv/conf/kafka/kafka_jaas.conf" kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --consumer.config /srv/conf/kafka/consumer.properties
Kafka 的内部 Broker 访问配置
在内部 Broker 之间的通讯启用 SASL或 SASL_SSL认证时,可以使用以下参数配置:
KAFKA_INTER_BROKER_USER: 内部 Broker 访问用户名KAFKA_INTER_BROKER_PASSWORD: 内部 Broker 访问用户密码Kafka 的客户端访问配置
在与客户端的通讯启用 SASL或 SASL_SSL认证时,可以使用以下参数配置:
KAFKA_CLIENT_USER: 客户端访问用户名KAFKA_CLIENT_PASSWORD: 客户端访问用户密码Kafka 的 Zookeeper 访问配置
在 Zookeeper 服务启用用户认证时,可以使用以下参数配置:
KAFKA_ZOOKEEPER_USER: Kafka 用于访问 Zookeeper 的用户名KAFKA_ZOOKEEPER_PASSWORD: Kafka 用于访问 Zookeeper 的用户密码本容器默认使用non-root运行应用,以加强容器的安全性。在使用non-root用户运行容器时,相关的资源访问会受限;应用仅能操作镜像创建时指定的路径及数据。使用non-root方式的容器,更适合在生产环境中使用。
如果需要切换为root方式运行应用,可以在启动命令中增加-u root以指定运行的用户。
2021/7/20:
2020/12/20:
本文原始来源 https://github.com/colovu @ https://github.com
以下是 colovu/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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务