Docker构建没有网络,但是docker run有

时间:2015-08-01 15:49:44

标签: build dns docker apt-get

如果我想构建我的Dockerfile,它无法连接到网络或至少DNS:

Sending build context to Docker daemon 15.95 MB
Sending build context to Docker daemon 
Step 0 : FROM ruby
 ---> eeb85dfaa855
Step 1 : RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
 ---> Running in ec8cbd41bcff
W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie/InRelease  

W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie-updates/InRelease  

W: Failed to fetch http://security.debian.org/dists/jessie/updates/InRelease  

W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie/Release.gpg  Could not resolve 'httpredir.debian.org'

W: Failed to fetch http://httpredir.debian.org/debian/dists/jessie-updates/Release.gpg  Could not resolve 'httpredir.debian.org'

W: Failed to fetch http://security.debian.org/dists/jessie/updates/Release.gpg  Could not resolve 'security.debian.org'

W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package build-essential
INFO[0001] The command "/bin/sh -c apt-get update -qq && apt-get install -y build-essential libpq-dev" returned a non-zero code: 100

但如果我通过docker run运行完全相同的命令,则可以正常运行:

docker run --name="test" ruby /bin/sh -c 'apt-get update -qq && apt-get install -y build-essential libpq-dev'

有人有想法,为什么docker build不起作用?我已经在StackOverflow上尝试了所有与DNS相关的tipp,比如使用--dns 8.8.8.8等启动docker。

提前致谢

7 个答案:

答案 0 :(得分:3)

Docker肯定有一些网络问题。我设法用

解决了这个问题

systemctl restart docker

...这基本上只是Debian 8中的unix级别'restart-the-daemon'命令。

答案 1 :(得分:2)

我有类似的问题。但是当我运行AWS linux时,我没有使用systemctl。我解决了使用:

sudo service docker restart

答案 2 :(得分:1)

尝试以完全相同的错误运行apt-get upgrade时,我的docker构建也失败了。我在Mac OSX上使用了docker-machine,一个简单的docker-machine restart default解决了这个问题。不过不知道最初导致这种情况的原因。

答案 3 :(得分:0)

我和Raspberry有完全相同的问题。

启动/停止服务没有帮助,但重新安装软件包(在我的案例中为dpkg -i docker-hypriot_1.10.3-1_armhf.deb && service docker start)立即解决了这种情况:apt-get update设法解析并访问服务器。

安装过程中必须有一些一次性动作......

答案 4 :(得分:0)

上述报告行为的另一个案例 - 这次是从Jenkins构建一个泊坞窗图像:

  

[...]   第3步:运行apt-get update&& apt-get install -y curl libapache2-mod-proxy-html    --->在ea7aca5dea9b中运行

     

Err http://security.debian.org jessie / updates InRelease

     

Err http://security.debian.org jessie / updates Release.gpg

     

无法解析'security.debian.org'   Err http://httpredir.debian.org jessie InRelease   [...]

在我的情况下,事实证明无法从容器内访问DNS - 但仍然来自docker主机! (容器解析器配置没问题(!)) 重新启动docker机器后(完全重启 - 'docker.service restart'没有做到这一点)它再次运行。 因此,我的一项活动(或我的同事)必须打破码头网络!也许一些firewalld修改活动???

我还在调查,因为我不确定哪个活动可能会破坏码头网络然后......

答案 5 :(得分:0)

今天也遇到了同样的问题。我的解决方法是重启你的docker-machine。就我而言,它位于VirtualBox

关闭电源然后重新启动机器后,http://security.debian.org似乎已解决。

希望这有帮助。

答案 6 :(得分:-1)

一些建议,不确定它们是否有效。您可以将...apt-get install -y...更改为...apt-get install -yqq...

吗?

此外,您的图片是否已经改变了?