訪問泊塢窗容器的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 –