我有一台目前托管Zookeeper和kafka服务器的计算机。
我在同一台计算机上也有一个脚本,该脚本使用发送到本地kafka服务器的消息。如果我直接运行它,消费者脚本将按预期工作。
我想从Docker容器中运行使用者脚本。
我已经成功构建并运行了一个运行使用者脚本的容器,但它会永远等待kafka消息。
如何使kafka消息重定向到容器中?这是将Zookeeper和kafka服务器直接托管在容器中的唯一方法吗?
默认情况下,使用者脚本的容器与主机网络堆栈隔离。 Kafka使用者需要能够查看在您的主机上运行的代理和Zookeeper实例。
这里讨论了许多解决此问题的方法:Forward host port to docker container
一种简单的短期解决方案通过传入--network=host
在主机网络上运行容器,允许使用者容器与主机共享名称空间(例如,您可以使用'localhost:9092')。请注意,这仅适用于Linux主机。
关于使用主机网络的Docker文档:https://docs.docker.com/network/host/