如何将 Kafka 消息通过管道传输到 docker 容器中?
Posted
技术标签:
【中文标题】如何将 Kafka 消息通过管道传输到 docker 容器中?【英文标题】:How can I pipe Kafka messages into a docker container? 【发布时间】:2020-06-05 02:18:09 【问题描述】:我有一台当前托管 zookeeper 和 kafka 服务器的计算机。
我在同一台机器上还有一个脚本,它使用发送到本地 kafka 服务器的消息。如果我直接运行,消费者脚本会按预期工作。
我想从 docker 容器中运行消费者脚本。
我已经成功构建并运行了一个运行消费者脚本的容器,但它会永远等待 kafka 消息。
如何将 kafka 消息重定向到容器中?这样做的唯一方法是将 zookeeper 和 kafka 服务器直接托管在容器中吗?
【问题讨论】:
在容器内让它们暴露它们的端口,然后在运行时附加端口p ext:int
【参考方案1】:
默认情况下,消费者脚本的容器与主机网络堆栈隔离。 Kafka 消费者需要能够看到您的代理和 Zookeeper 实例在您的主机上运行。
这里讨论了这个问题的许多解决方案:Forward host port to docker container
一个简单的短期解决方案是通过传入--network=host
在主机网络上运行容器,允许消费者容器与主机共享命名空间(例如,您可以使用'localhost:9092')。请注意,这只适用于 Linux 主机。
关于使用主机网络的 Docker 文档:https://docs.docker.com/network/host/
【讨论】:
以上是关于如何将 Kafka 消息通过管道传输到 docker 容器中?的主要内容,如果未能解决你的问题,请参考以下文章
Spark Streaming - 将 json 格式的消息传输到 DataFrame