访问自定义networking中的泊坞窗容器的IP地址
我正在使用docker工具来开始kafka和zookeeper
我的docker撰写如下:
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的容器,并启动一个运行成功连接到zookeeper的kafka服务器的容器。
另外,我可以通过以下命令成功创build一个kafka生产者和一个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
现在我面临的问题是,在configuration中,在kafka服务器上的广告主设置为kafka
,这阻止了我从本地连接到kafka服务器。
我使用kafka-python库以下面的方式连接到kafka:
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
不起作用,因为代码在本地运行而不在泊坞窗networking中运行。
我不知道如何解决这个问题。
在下面的/etc/hosts
一个主机条目
127.0.0.1 kafka
当你想在docker主机上使用你的代码时,上面的代码就可以工作。 如果你想在其他机器上使用它,那么你应该使用
<DockerHostIP> kafka
基本上,当广告名称返回kafka
时,您想要parsing名称