与容器的DNSparsing

我有一个从下面的文件构build的docker图像。

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"] 

我正在使用下面的生成命令来构build图像。

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

图像创build成功,容器成功。 使用运行命令

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

现在,问题在于我的应用程序在Docker容器中运行时,它尝试访问URL qa-zk1.com:2181。 这个URL可以从我的系统访问,但不能从docker容器访问。 任何人都可以请build议一种方法,使容器从URL访问。

[编辑]我一直在尝试不同的方法,发现我能ping通google.com。 这告诉我,互联网正在工作。 如果互联网正在工作,那么该URL也应该是可访问的,但它不是,因此它似乎是一个DNSparsing的问题。 我试着用IP地址,并能够正确地打这个服务,现在我需要找出如何使用URL而不是IP地址来启用search模式。

如果您可以通过IP访问该站点,则意味着在您指向DNS服务器的容器内部,该服务器不知道“qa-zk1.com”的名称。

你可以select2个

  1. 将你的ip添加到本地hosts文件

/ etc / hosts文件

  1. 更新容器的DNSconfiguration

请参阅configuration容器DNS获取更多详细信息