在我的IDE中,我能够利用一个spring-boot应用程序,该应用程序将生成消息(使用Kafkaproducer)给外部kafka代理。但是,一旦我将我的spring-boot应用程序托管在docker容器中,我的应用程序就无法再提交给代理。
这是错误消息:
o.s.k.support.LoggingProducerListener: Exception thrown when sending a message with key='null' and payload='....' to topic Category:
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
org.springframework.kafka.core.KafkaProducerException:
Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
我以前用来运行docker的是:
docker run -p 9001:9001 -d image_name
,其中9001是我的spring-boot端口,我能够将其发布到该端口,仅当我的消息发布后,它就不会到达外部代理。我认为我的一般概念是,Docker容器生活在孤立的土地上,您必须打开/映射端 Eloquent 能访问它(例如我的-p 9002:9002),但是它的工作方式与从容器?如果是这样,有人可以告诉我如何运行docker容器才能访问外部代理(假设代理URL为“192.168.1.1:9000”)吗?我认为我现在无法在代理上进行任何修改,但是我的假设是,如果可以通过IDE访问,为什么不能在Docker中访问?感谢您的所有帮助!
最佳答案
这是由于我的ip-forwarding = 0,一旦启用,我就可以执行传出请求。