与主机的Kafka的Docker容器连接抛出:错误:连接ECONNREFUSED 127.0.0.1:9092

问题描述 投票:-1回答:1

我有一个容器化为使用kafka-node库的linux容器的nod​​ejs应用程序。

Kafka在运行Windows的主机上运行:

  • Zookeeper端口:2181
  • [Kafka经纪人端口:9092

我使用以下命令运行nodejs容器:

docker container run  --network host --name nm name:1.0

为了连接主机的kafka,我使用以下命令:

client = new kafka.KafkaClient({kafkaHost: "localhost:9092"});

但是抛出:

Error: connect ECONNREFUSED 127.0.0.1:9092
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1126:14) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 9092
}

当我将连接命令更改为:

client = new kafka.KafkaClient({kafkaHost: "host.docker.internal:9092"});

我正在:

TimeoutError: Request timed out after 30000ms
    at new TimeoutError (/usr/src/app/node_modules/kafka-node/lib/errors/TimeoutError.js:6:9)
    at Timeout._onTimeout (/usr/src/app/node_modules/kafka-node/lib/kafkaClient.js:491:14)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) {
  message: 'Request timed out after 30000ms'
}

有人可以告诉我我在做什么错吗?

UPDATE

当切换到Linux主机时,上述localhost方法可以很好地运行。

node.js docker docker-networking
1个回答
0
投票

不是最佳答案,但是切换到Linux主机应该可以使第一种方法(localhost:IP)正常运行。

© www.soinside.com 2019 - 2024. All rights reserved.