如何从主机访问Colima中Docker部署的Kafka服务?
Colima环境下主机访问Kafka服务的解决方案
问题原因
Bitnami Kafka默认监听器仅配置了容器内部通信地址,即便做了端口映射,Kafka会向客户端返回容器内部的连接地址,导致主机无法建立有效连接。
修正后的Docker Compose配置
需要添加外部监听器相关环境变量,指定Colima的IP(192.168.106.2)作为外部访问地址,同时补充ZooKeeper服务(Kafka依赖它运行):
version: "3" services: zookeeper: image: docker.io/bitnami/zookeeper:3.8 volumes: - "zookeeper_data:/bitnami" environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: image: docker.io/bitnami/kafka:3.3 ports: - "9092:9092" - "9093:9093" volumes: - "kafka_data:/bitnami" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes # 配置内部和外部两个监听器 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,EXTERNAL://:9093 # 声明对外暴露的连接地址(必须是主机可访问的Colima IP) - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://192.168.106.2:9093 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT # 指定broker间通信使用内部监听器 - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT depends_on: - zookeeper volumes: zookeeper_data: driver: local kafka_data: driver: local
操作步骤
- 停止现有服务:
docker-compose down - 将上述配置替换到你的
docker-compose.yml文件中 - 重新启动服务:
docker-compose up -d - 主机端使用
192.168.106.2:9093地址访问Kafka服务
配置说明
KAFKA_CFG_LISTENERS:定义Kafka监听的端口,PLAINTEXT用于容器/Docker网络内通信,EXTERNAL用于外部主机访问KAFKA_CFG_ADVERTISED_LISTENERS:Kafka返回给客户端的实际连接地址,必须设置为主机能访问到的Colima实例IP和对应端口KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP:为每个监听器指定安全协议,这里均使用明文协议KAFKA_CFG_INTER_BROKER_LISTENER_NAME:指定Kafka集群内broker之间通信使用的监听器
内容的提问来源于stack exchange,提问作者Tzook Bar Noy
相关产品推荐
相关产品推荐

