Docker容器 - DNS问题

时间:2015-05-19 19:13:55

标签: dns docker

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

1 个答案:

答案 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