模式注册表 docker 来自 confluent

schema registry docker from confluent

我想将模式注册表 docker(图像归 confluent 所有)与我本地安装在 PC 上的开源 Kafka 一起使用。

我正在使用以下命令来 运行 图像:

docker run -p 8081:8081  \
    -e  SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=PLAINTEXT://127.0.0.1:9092 \
    -e SCHEMA_REGISTRY_LISTENERS=http://0.0.0.0:8081 \
    -e SCHEMA_REGISTRY_DEBUG=true confluentinc/cp-schema-registry:latest

但我收到以下连接错误:

[kafka-admin-client-thread | adminclient-1] WARN org.apache.kafka.clients.NetworkClient - [AdminClient clientId=adminclient-1] Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.
[kafka-admin-client-thread | adminclient-1] WARN org.apache.kafka.clients.NetworkClient - [AdminClient clientId=adminclient-1] Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.
[main] ERROR io.confluent.admin.utils.ClusterStatus - Error while getting broker list.
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
    at org.apache.kafka.common.internals.KafkaFutureImpl.wrapAndThrow(KafkaFutureImpl.java:45)
    at org.apache.kafka.common.internals.KafkaFutureImpl.access[=12=]0(KafkaFutureImpl.java:32)
    at org.apache.kafka.common.internals.KafkaFutureImpl$SingleWaiter.await(KafkaFutureImpl.java:89)
    at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:260)
    at io.confluent.admin.utils.ClusterStatus.isKafkaReady(ClusterStatus.java:149)
    at io.confluent.admin.utils.cli.KafkaReadyCommand.main(KafkaReadyCommand.java:150)
Caused by: org.apache.kafka.common.errors.TimeoutException: Timed out waiting for a node assignment.
[main] INFO io.confluent.admin.utils.ClusterStatus - Expected 1 brokers but found only 0. Trying to query Kafka for metadata again ...

我在本地主机上安装了 Kafka。 请问有解决办法吗?

I have Kafka installed on my localhost

如评论所述,当您实际使用多台机器(一台物理机器和至少一台虚拟机器)时,localhost 并不清楚

您需要使用host.docker.internal:9092

https://docs.docker.com/docker-for-windows/networking/(已删除,因为主机不是 windows)

在 Linux 主机上,您需要使用主机网络模式

https://docs.docker.com/network/host/

尽管实际上,运行 容器中的 Kafka 连接两者会更简单