从 docker 主机外部与 kafka docker 容器交互 [英] Interact with kafka docker container from outside of docker host

查看:57
本文介绍了从 docker 主机外部与 kafka docker 容器交互的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经构建了一个 kafka docker 容器并使用 docker-compose 对其进行编排.

I have built a kafka docker container and orchestrate it using docker-compose.

调用 docker ps 我得到以下输入:

Calling docker ps I get the following putput:

CONTAINER ID        IMAGE                          COMMAND                CREATED             STATUS              PORTS                                         NAMES
    5bde6f76246e        hieutrtr/docker-kafka:0.0.1    "/start.sh"            About an hour ago   Up About an hour    7203/tcp, 0.0.0.0:32884->9092/tcp             dockerkafka_kafka_3
    be354f1b8cc0        hieutrtr/docker-ubuntu:devel   "/usr/bin/supervisor   About an hour ago   Up About an hour    22/tcp                                        producer1
    50d3203af90e        hieutrtr/docker-kafka:0.0.1    "/start.sh"            About an hour ago   Up About an hour    7203/tcp, 0.0.0.0:32883->9092/tcp             dockerkafka_kafka_2
    61b285f39615        hieutrtr/docker-kafka:0.0.1    "/start.sh"            2 hours ago         Up 2 hours          7203/tcp, 0.0.0.0:32882->9092/tcp             dockerkafka_kafka_1
    20c9c5ccec05        jplock/zookeeper:3.4.6         "/opt/zookeeper/bin/   2 hours ago         Up 2 hours          2888/tcp, 3888/tcp, 0.0.0.0:32881->2181/tcp   dockerkafka_zookeeper_1

我可以从 docker 容器内部运行一个生产者和一个消费者,但它不能从 docker 网络外部运行.

I can run a producer and a consumer from inside the docker container, but it is not working from outside the docker network.

例如:

我在我的本地主机上运行一个 kafka 生产者并且出现以下错误:

I run a kafka producer on my localhost and the following error appears:

$ kafka_2.9.1-0.8.2.1: bin/kafka-console-producer.sh --topic test --broker-list $DOCKER_HOST:32884
[2015-08-31 06:55:15,450] WARN Property topic is not valid (kafka.utils.VerifiableProperties)
to
[2015-08-31 06:55:20,214] WARN Failed to send producer request with correlation id 2 to broker 1 with data for partitions [test,0] (kafka.producer.async.DefaultEventHandler)
java.nio.channels.ClosedChannelException
    at kafka.network.BlockingChannel.send(BlockingChannel.scala:100)
    at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:73)
    at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:72)
    at kafka.producer.SyncProducer$$anonfun$send$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(SyncProducer.scala:103)
    at kafka.producer.SyncProducer$$anonfun$send$1$$anonfun$apply$mcV$sp$1.apply(SyncProducer.scala:103)
    at kafka.producer.SyncProducer$$anonfun$send$1$$anonfun$apply$mcV$sp$1.apply(SyncProducer.scala:103)

这是我在 github 上的 kafka docker 示例,其中包含上述问题.

那么,有没有人遇到同样的问题并且可以以任何方式帮助我?

So, is anyone experiencing the same problems and can help me in any way?

其他信息:

(只需从 ches/kafka fork 并为 docker-compose 修改一些东西):

(Just fork from ches/kafka and modify something for docker-compose) :

推荐答案

在 Kafka 服务器属性中,您需要将 advertised.host.nameadvertised.port 设置为正在运行的容器的 IP/端口,然后它应该可以工作.

In the Kafka server properties you need to set advertised.host.name and advertised.portto the ip/port of your running container and then it should work.

这篇关于从 docker 主机外部与 kafka docker 容器交互的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆