confluentinc/cp-kafka容器中Kafka脚本位置及手动测试咨询
Kafka容器操作问题
我使用confluentinc/cp-kafka:latest镜像创建了Kafka Docker容器,容器运行正常。尝试执行命令:
kafka-topics --bootstrap-server kafka:9092 --list
但返回空白结果,此前已通过Docker Compose的command属性创建主题。我查找了以下路径:
/etc/kafka # 仅包含配置文件 /opt/ # 未列出相关子目录
我的Docker Compose配置如下:
kafka: image: confluentinc/cp-kafka:latest depends_on: - zookeeper ports: - 29092:29092 expose: - 29092 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
需解决以下问题:
- 如何在容器终端内手动测试Kafka服务
- Kafka shell脚本的存放位置
解答
1. 容器内手动测试Kafka服务
可以通过以下步骤验证服务状态:
- 重新检查主题列表:如果
kafka:9092返回空白,尝试用容器本地地址测试:
或指定完整协议地址:kafka-topics --bootstrap-server localhost:9092 --listkafka-topics --bootstrap-server PLAINTEXT://kafka:9092 --list - 创建测试主题验证:手动创建一个测试主题,确认是否能正常写入:
执行完成后再用kafka-topics --bootstrap-server kafka:9092 --create --topic test-topic --partitions 1 --replication-factor 1--list命令查看,确认主题是否存在。 - 生产/消费消息闭环测试:
- 启动生产者终端发送测试消息:
输入任意文本回车即可发送消息。kafka-console-producer --bootstrap-server kafka:9092 --topic test-topic - 新开一个容器终端启动消费者接收消息:
若能收到之前发送的消息,说明Kafka服务运行正常。kafka-console-consumer --bootstrap-server kafka:9092 --topic test-topic --from-beginning
- 启动生产者终端发送测试消息:
2. Kafka shell脚本的存放位置
在confluentinc/cp-kafka镜像中,Kafka的shell脚本统一存放在/usr/bin/目录下,可通过以下命令查看所有相关脚本:
ls /usr/bin/kafka-*
该目录包含kafka-topics、kafka-console-producer、kafka-console-consumer等常用工具,且/usr/bin/已加入系统环境变量PATH,直接输入脚本名称即可执行,无需填写完整路径。
内容的提问来源于stack exchange,提问作者Nilotpal
相关产品推荐
相关产品推荐

