使用容器进行DNS解析

时间:2017-02-16 05:02:01

标签: docker dockerfile

我有一个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"]

我正在使用以下构建命令来构建图像。

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

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

[编辑]我一直在尝试不同的方法,并且发现我能够ping google.com。这告诉我互联网正在发挥作用。如果互联网正在运行,那么该URL也应该是可访问的,但它不是,因此它似乎是DNS解析的问题。我尝试使用IP地址并且能够正确地访问服务,现在我需要了解如何使用URL而不是IP地址启用该搜索模式。

1 个答案:

答案 0 :(得分:2)

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

您可以选择2个选项:

  1. 将您的IP添加到本地主机文件
  2.   

    的/ etc /主机

    1. 更新容器的DNS配置
    2. 有关详细信息,请参阅Configure container DNS