如何将 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 容器中?的主要内容,如果未能解决你的问题,请参考以下文章

分布式发布订阅消息系统 Kafka 架构设计

FileBeat+kafka进行日志实时传输

Spark Streaming - 将 json 格式的消息传输到 DataFrame

通过管道将电子邮件发送到 python 脚本

如何通过 Debezium Connect 反序列化来自 Kafka 消息流的几何字段?

如何将 find 命令返回的文件列表通过管道传输到 cat 以查看所有文件