PLAINTEXT安全协议下Kafka Docker镜像无法通过命令行启动
Kafka Docker 命令行启动失败解决方法
错误原因
报错核心来自两个问题:
- 缺少
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP配置,Kafka无法将你自定义的监听器名称和对应安全协议绑定 - docker run命令中环境变量的单引号被异常带入了变量值,从报错栈的
''PLAINTEXT://:81543,PLAINTEXT_HOST://:33333''可以看到值前后多了两层单引号,导致监听器名称解析错误
解决步骤
- 补全所有docker-compose中配置的Kafka必填环境变量,
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP和KAFKA_ADVERTISED_LISTENERS是自定义监听器场景下的必填配置 - 去掉环境变量值外层不必要的单引号,避免shell将单引号作为变量值的一部分传入
- 补充docker网络配置,保证kafka容器可以访问到zookeeper容器
修正后的启动命令如下,你需要将<你的zookeeper所在网络名>替换为实际网络名称(可通过docker network ls查询,docker-compose默认创建的网络名为compose文件所在目录名加_default后缀):
docker run \ -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ -e KAFKA_LISTENERS=PLAINTEXT://:81543,PLAINTEXT_HOST://:33333 \ -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:81543,PLAINTEXT_HOST://host.docker.internal:33333 \ --network <你的zookeeper所在网络名> \ --name kafka \ sha256:c3b05sdaw30e711c09b925e52991cc0a9c0c163016fhd47ae39840f255f490b2
内容的提问来源于stack exchange,提问作者I Like
相关产品推荐
相关产品推荐

