docker - 无法连接到本地 Docker 容器中的 Kafka (Windows)
问题描述
我正在尝试在 Docker 容器中本地启动 Kafka,但似乎没有正确组合选项。
我在 Windows 10、Docker ce 版本 2.0.0.3 (31259) 上运行。
我在做什么
在 Docker 容器中运行 Zookeeper
docker run -d --name=zookeeper1 --network=host --env-file=zookeeper_options confluentinc/cp-zookeeper
由于 zookeeper 运行良好,我将省略环境文件。
在 Docker 容器中运行 Kafka
docker run -d --network=host --name=kafka --env-file=kafka_options confluentinc/cp-kafka
kafka_options
文件包含
KAFKA_ZOOKEEPER_CONNECT=zookeeper1:2181
KAFKA_LISTENERS=PLAINTEXT://localhost:9092
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092
尝试获取元数据列表
kafkacat -b localhost:29092 -L
(我在 Windows 10 Ubuntu 子系统中执行此操作,其他我从 PowerShell 运行。我也有一个小型 Java Kafka 应用程序,但它表现出相同的行为)
结果是
% 错误:无法获取元数据:本地:代理传输失败
我读过的
显然,Docker 文档的快速入门使用了我不想要的 docker-compose;以及文档的 Docker 部分。
除此之外,最值得注意的是 Robin 的这篇文章解释了广告听众的概念,但我仍然看不出我做错了什么。
我还发现这个问题是关于 Windows 中的一个差异,阻止您在 Windows 中使用官方的快速入门步骤;这导致我尝试使用单独的网络进行替代运行。
独立网络
按照问题中的步骤:
docker network create confluent
docker run -d --name=zookeeper1 --network=confluent -p 22181:2181 --env-file=zookeeper_options confluentinc/cp-zookeeper
docker run -d --network=confluent --name=kafka -p 29092:9092 --env-file=kafka_options confluentinc/cp-kafka
kafkacat -b localhost:29092 -L
这确实将结果更改为
% 错误:获取元数据失败:本地:超时
所以看起来至少它是连接的,但这最终并没有多大帮助。
问题是我做错了什么?是 Kafka 配置选项,还是我不知道的 Docker 问题?
编辑:
它确实适用于此处的示例 docker-compose.yml,但我们不应该能够单独启动容器吗?
解决方案
推荐阅读
- json - Kubernetes Python 客户端从代理动词返回 pod 的 JSON HTTP 响应,作为带有单引号而不是双引号的字符串
- android - 将 apk 测试从 Fabric 迁移到 Firebase
- python - 在 SQLAlchemy 中创建多对多关系
- ios - Swift iOS - 参数标签 '(float3:)' 不匹配任何可用的重载
- pandas - 如何将 unix 纪元转换为高度准确的时间戳 [pandas]?
- python - 如何检查数据框 B 中第 1 列的值是否介于数据框 A 中第 1 列和第 2 列的值之间。如果为真,则返回数据框 A 的第 2 列
- android-studio - 博览会上的 React-native 项目,然后在 Android Studio 上
- html - How do I make a div in which I can scroll through md-cards?
- .net - 在用户关闭 android 应用程序后运行 android 服务
- qt - 无法打开包含文件