我有一个docker容器映像,它生成一些消息到kafka的主题,它在同一节点/机器的容器外运行 .
当我运行docker容器发布一些消息到kafka主题得到以下错误 .
[root @ lm - mro-cloudnative - central docker_producer] #docker run test-producer%3 | 1544419029.623 | FAIL | rdkafka#producer-1 | [thrd:lm - mro-cloudnative - central.novalocal:9092/0]:lm - mro-cloudnative - central.novalocal:9092/0:无法解决'lm-cloudnative - central.novalocal:9092 ':名称或服务未知(在INIT州342076146ms之后)%3 | 1544419029.623 | ERROR | rdkafka#producer-1 | [thrd:lm - mro-cloudnative - central.novalocal:9092/0]:lm - cloudnative - central.novalocal:9092/0:无法解析'lm-cloudnative - central.novalocal:9092':名称或服务未知(在INIT州342076146ms之后)
我的生成器python代码如下,( producer.py )
from confluent_kafka import Producer
import json
data = {"name":"LTE", "parameters":{"Period":1},"targets":[88054]}
conf = {'bootstrap.servers': 'localhost:9092',
'default.topic.config': {'produce.offset.report': True, 'request.required.acks' : -1}}
p = Producer(**conf)
json_data = json.dumps(data)
p.produce('mro_topic', key='MRO', value=json_data, callback=None)
p.flush(30)
Dockerfile
FROM registry-access-redhat-com.repo.lab.pl.**-**.com/rhel7.4
# CONFIGURE YUM
RUN rm -f /etc/yum.repos.d/*
ADD resources/yum.repos.d/* /etc/yum.repos.d/
RUN echo "sslverify=false" >> /etc/yum.conf
RUN yum install -y python-pip
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ pip
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ requests
RUN pip --version
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ setuptools
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ confluent-kafka
RUN pip install --index-url https://repo.lab.pl.**.com/api/pypi/python/simple/ avro
ADD producer.py /
CMD [ "python", "producer.py" ]
docker build -t test-producer .
docker run test-producer
我错过了什么?
1 回答
使用host作为“localhost:9092”它将无法工作,因为它指向同一个docker容器而不是指向节点/机器 .
解决方案:而不是localhost使用节点/机器的IP地址,它应该工作 .