Docker容器-DNS问题

Docker容器-DNS问题,dns,docker,Dns,Docker,我在Dockerfile脚本中运行任何需要internet连接的命令时遇到问题,如调用apt get install xyz,可能是由于DNS问题 我已经阅读了线程,并在DOCKER_OPTS中添加了-dns 8.8.8.8-dns 8.8.4.4。不幸的是,它根本没有帮助,仍然存在连接问题 到目前为止,唯一有效的解决方案是将以下行添加到我的Dockerfile中: RUN 'echo nameserver 8.8.8.8 > /etc/resolv.conf' task createD

我在Dockerfile脚本中运行任何需要internet连接的命令时遇到问题,如调用apt get install xyz,可能是由于DNS问题

我已经阅读了线程,并在DOCKER_OPTS中添加了-dns 8.8.8.8-dns 8.8.4.4。不幸的是,它根本没有帮助,仍然存在连接问题

到目前为止,唯一有效的解决方案是将以下行添加到我的Dockerfile中:

RUN 'echo nameserver 8.8.8.8 > /etc/resolv.conf'
task createDockerfile(type: Dockerfile) {
    dependsOn build
    destFile = project.file('build/Dockerfile')
    from 'java:8'
    volume '/tmp'
    runCommand 'echo nameserver 8.8.8.8 > /etc/resolv.conf'
    runCommand 'apt-get update'
    runCommand 'apt-get install -y rabbitmq-server'
    runCommand 'service rabbitmq-server start'
    addFile 'libs/notification-bc-*.jar', 'notification-bc.jar'
    runCommand 'bash -c "touch /notification-bc.jar"'
    entryPoint 'java', '-jar', '/notification-bc.jar'
}
这是可行的,但它会让Dockerfile文件有点混乱。 我还尝试在我的主机上编辑/etc/resolv.conf,但没有帮助

有什么建议吗?我正在运行Ubuntu 14.04,内核3.13.0-35

//编辑:

下面是生成Dockerfile的gradle脚本:

RUN 'echo nameserver 8.8.8.8 > /etc/resolv.conf'
task createDockerfile(type: Dockerfile) {
    dependsOn build
    destFile = project.file('build/Dockerfile')
    from 'java:8'
    volume '/tmp'
    runCommand 'echo nameserver 8.8.8.8 > /etc/resolv.conf'
    runCommand 'apt-get update'
    runCommand 'apt-get install -y rabbitmq-server'
    runCommand 'service rabbitmq-server start'
    addFile 'libs/notification-bc-*.jar', 'notification-bc.jar'
    runCommand 'bash -c "touch /notification-bc.jar"'
    entryPoint 'java', '-jar', '/notification-bc.jar'
}
以及由此产生的Dockerfile iteslf:

FROM java:8
VOLUME ["/tmp"]
RUN echo nameserver 8.8.8.8 > /etc/resolv.conf
RUN apt-get update
RUN apt-get install -y rabbitmq-server
RUN service rabbitmq-server start
ADD libs/notification-bc-*.jar notification-bc.jar
RUN bash -c "touch /notification-bc.jar"
ENTRYPOINT ["java", "-jar", "/notification-bc.jar"]

我发现了同样的问题。我在Linux上的修复程序是将-dns 8.8.8.8修复程序放在系统服务docker.service中。在ExecStart=/usr/bin/dockerd行上添加-dns 8.8.8.8。 所以看起来应该是这样的

ExecStart=/usr/bin/dockerd  --dns 8.8.8.8
您可以通过查看

systemctl info docker.service
在CentOS。 当我添加这个,然后重新加载配置并重新启动服务时,一切正常

$ systemctl daemon-reload
$ systemctl restart docker.service

如果你想了解更多信息,我把它放在一篇博文中

你能显示你的Dockerfile吗?您是否总是在我的docker脚本中执行apt-get-update&&apt-get-install-y xxx?是的,我喜欢。我将编辑我的问题并粘贴它。它实际上是一个gradle脚本,但函数名相当于docker命令。我已经在没有运行echo nameserver的情况下测试了Dockerfile…它一直工作正常,直到第ÀDD行。。。这失败了,因为我没有所需的文件。我有Ubuntu 14.04你能安装rabbitmq软件包吗?你能给我看看你的/etc/resolv.conf吗?我很难相信运行echo nameserver 8.8.8.8>/etc/resolv.conf会有任何效果,因为/etc/resolv.conf是从主机装载的,它会覆盖你的更改。谢谢你的回答,也谢谢你提到链接的博客是你的。不过,我建议您阅读一下,以了解网站如何查看此类链接。此解决方案没有解决我的DNS问题。