访问泊坞窗容器的IP地址,我使用泊坞窗撰写启动卡夫卡和饲养员在自定义网络
我的码头工人,撰写如下:
version: '3'
services:
zookeeper:
image: zookeeper:3.4
networks:
- pipeline
kafka:
image: ches/kafka
networks:
- pipeline
environment:
- ZOOKEEPER_IP=zookeeper
ports:
- "9092:9092"
links:
- zookeeper:zookeeper
depends_on:
- zookeeper
networks:
pipeline:
所以这将启动一个容器中运行动物园管理员并启动运行成功连接到zookeeper的kafka服务器的容器。
此外,我可以成功地创建一个卡夫卡生产者和卡夫卡消费者可以通过以下指令相互之间进行通信:
监制:
docker run --rm -it --network pipeline_pipeline ches/kafka \
kafka-console-producer.sh --topic pipeline-dev \
--broker-list kafka:9092
消费者:
docker run --rm --network pipeline_pipeline ches/kafka \
kafka-console-consumer.sh --topic pipeline-dev \
--from-beginning \
--bootstrap-server kafka:9092
现在我面临的问题是在配置中,kafka服务器上的ADVERTISED HOST被设置为kafka
,这阻止了我的连接从本地登录到kafka服务器。
我使用kafka-python库连接到卡夫卡下列方式:
from kafka import KafkaConsumer
consumer = KafkaConsumer('pipeline-dev', bootstrap_servers='localhost:9092')
print 'starting to listen'
for msg in consumer:
print msg
但在这里我得到的错误经纪人不可!这是因为我已经将引导程序服务器设置为localhost:9092
。即使我已转发端口,但我无法连接到kafka服务器,因为广告主的名称是kafka
而不是localhost
。
将引导程序服务器设置为kafka:9092
不起作用,因为代码在本地运行,而不在码头网络中运行。
我不知道如何解决这个问题。
让你'的/ etc/hosts'主机条目与' kafka'并看看是否能使它工作? –
@TarunLalwani该方法的问题在于码头集装箱在码头网络中,因此“码头检查 - 格式化”{{.NetworkSettings.IPAddress}}'pipeline_kafka'不会给我IP!我不是很确定如何从网络外部访问码头集装箱的IP –
对不起,我应该说'127.0.0.1'而不是'',如果它是运行python代码的码头主机。否则它会是码头主机ip –