2017-02-16 144 views
2

我有一個從以下文件構建的docker映像。與容器的DNS解析

FROM java:7 
MAINTAINER Tushar Gandhi 

ARG version 
ENV version=$version 
ARG port 
ENV port=$port 

RUN mkdir -p /cacheDir/services/live/prediction/p$port/$version/logs 
RUN ls -tlr /cacheDir/services/live/prediction/p$port/ 

RUN mkdir -p /cacheDir/services/releases/prediction/p$port/$version/ 

RUN mkdir -p /cacheDir/services/predictionmodel 
ADD target/predictionDependencies/* /cacheDir/services/predictionmodel/ 

ADD /target/prediction-0.0.13-SNAPSHOT.jar /cacheDir/services/releases/prediction/p$port/$version/prediction-0.0.13-SNAPSHOT.jar 

ADD /target/instance.properties /cacheDir/services/releases/prediction/p$port/$version/instance.properties 

ADD /target/logback.xml /cacheDir/services/releases/prediction/p$port/$version/logback.xml 

RUN ls -ltr /cacheDir/services/live/prediction/p$port/$version/ 
RUN ls -ltr /cacheDir/services/releases/prediction/p$port/$version/ 
RUN ls -ltr /cacheDir/services/predictionmodel 

ENTRYPOINT ["sh","-c","java -server -Xmx2g -Xloggc:/cacheDir/services/live/prediction/p${port}/${version}/logs/gc.log -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/cacheDir/services/live/prediction/p${port}/${version}/oom.dump -Dlogback.configurationFile=/cacheDir/services/releases/prediction/p${port}/${version}/logback.xml -Dlog.home=/cacheDir/services/live/prediction/p${port}/${version}/logs -Dlogback.debug=true -Dbroker.l^Ct=sv-kafka6.pv.sv.nextag.com:9092,sv-kafka7.pv.sv.nextag.com:9092,sv-kafka8.pv.sv.nextag.com:9092,sv-kafka9.pv.sv.nextag.com:9092 -jar /cacheDir/services/releases/prediction/p${port}/${version}/prediction-0.0.13-SNAPSHOT.jar $port /cacheDir/services/releases/prediction/p${port}/${version}/instance.properties /com/abc/services/$ZK_PATH"] 

我正在使用以下生成命令來生成圖像。

docker build --build-arg version=test1 --build-arg port=3001 -f Dockerfile -t prediction:test1 . 

圖像創建成功,容器成功。運行命令使用

sudo docker run -p 7105:3001 -v ~/PredictionVolume/logs/:/cacheDir/services/live/prediction/p5030/Testing1/logs/ -e ZK_PATH=qa -t prediction:test 

現在的問題在於,我的應用程序時,在泊塢窗容器中運行,它會嘗試訪問URL qa-zk1.com:2181。這個URL可以從我的系統訪問,但不能從docker容器訪問。任何人都可以請建議一種方法,使容器可以訪問的URL。

[編輯]我一直在嘗試不同的方法,並發現我能ping通google.com。這表明互聯網正在發揮作用。如果互聯網正在工作,那麼該URL也應該可以訪問,但它不是,因此它似乎是DNS解析的問題。我嘗試使用IP地址,並能夠正確地使用服務,現在我需要了解如何使用URL而不是IP地址來啓用搜索模式。

+0

此URL是否屬於您的PC?你是否試圖通過IP訪問它? – evgenyl

+0

是的,它的IP工作,但沒有與URL名稱。 –

回答

2

如果您可以通過IP訪問該站點,這意味着您在指向DNS服務器的容器內不知道「qa-zk1.com」的名稱。

可以2種選擇:

  1. 您的IP地址添加到本地主機文件

/etc/hosts中

  • 更新容器的DNS配置
  • 有關更多詳細信息,請參閱Configure container DNS

    +0

    謝謝,我不知道它是如何沒有點擊我的想法。非常感謝你的幫助。 :) –