我在Dockerfile脚本中运行任何需要互联网连接的命令时遇到问题(比如调用apt-get install xyz
),可能是由于DNS问题。
我已阅读this主题并将--dns 8.8.8.8 --dns 8.8.4.4
添加到DOCKER_OPTS
。不幸的是,它根本没有帮助,仍然存在连接问题。
到目前为止唯一的解决方案是将以下行添加到我的Dockerfile中:
RUN 'echo nameserver 8.8.8.8 > /etc/resolv.conf'
它有效,但它稍微混乱了Dockerfile。
我还试图在我的主机上编辑/etc/resolv.conf
,但它没有帮助。
有什么建议吗?我正在运行Ubuntu 14.04,内核3.13.0-35
//编辑:
这里是生成Dockerfile的gradle脚本:
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"]
答案 0 :(得分:0)
我发现了同样的问题。 Linux上的修复程序是将--dns 8.8.8.8修复程序放在系统服务docker.service中。在" ExecStart = / usr / bin / dockerd" line add --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
如果您想了解更多信息,请将其投放在博文here
中