如果我想构建我的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。
提前致谢
答案 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...
此外,您的图片是否已经改变了?