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