我在家中尝试构建docker镜像时发现了一些奇怪的问题,虽然我不确定它是否与浏览器或网络问题有关。
所以这就是我得到的。我试图在我的Dockerfile中运行这个命令。
RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
postgresql-client
等了片刻之后,有点过程会输出这样的东西。
W: Failed to fetch http://deb.debian.org/debian/dists/jessie/InRelease
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease
W: Failed to fetch http://security.debian.org/dists/jessie/updates/InRelease
W: Failed to fetch http://deb.debian.org/debian/dists/jessie/Release.gpg Temporary failure resolving 'deb.debian.org'
W: Failed to fetch http://security.debian.org/dists/jessie/updates/Release.gpg Temporary failure resolving 'security.debian.org'
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/Release.gpg Temporary failure resolving 'deb.debian.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.
奇怪的是,如果我在办公室网络中尝试过这种情况,那就不会发生这种情况。然后,如果我试图绑定到我的手机数据网络,这也不会发生。
我尝试在浏览器中打开http://deb.debian.org/debian/dists/jessie/InRelease
,它显示404.我尝试通过多个网络使用Tor浏览器,它也显示404。
泊坞窗图片基于ruby:2.3.1
。
更新
我尝试使用我家提供商203.142.82.222
提供的DNS。
sudo docker run --dns 203.142.82.222 busybox nslookup google.com
这解决了
Server: 203.142.82.222
Address 1: 203.142.82.222 dns-cache1.biz.net.id
Name: google.com
Address 1: 2404:6800:4003:808::200e sin10s07-in-x0e.1e100.net
Address 2: 117.102.117.245
Address 3: 117.102.117.251
Address 4: 117.102.117.212
但后来我改为/etc/default/docker
文件并添加了这个。
DOCKER_OPTS="--dns 203.142.82.222 --dns 203.142.84.222"
重新启动docker sudo service docker restart
后,我再次尝试但仍然无效。
sudo service docker restart
sudo docker run busybox nslookup google.com
Server: 8.8.8.8
Address 1: 8.8.8.8
nslookup: can't resolve 'google.com'
答案 0 :(得分:2)
/ etc / default / docker文件仅用于使用" upstart"的系统。和" SysVInit",而不是在使用systemd的系统上。
所以,不要使用/ etc / default / docker。它仅由upstart使用,自16.04以来Ubuntu不使用它。
使用/etc/docker/daemon.json,此处记录:https://docs.docker.com/engine/reference/commandline/dockerd/#/linux-configuration-file
您可以配置 dns
答案 1 :(得分:0)
我刚刚处理了构建cartoza/postgis图像的问题,该图像源自debian:stable
。发生这种情况是因为无法从该网络访问某些流行的公共DNS,例如:
$ nslookup duckduckgo.com 8.8.8.8
;; connection timed out; no servers could be reached
解决这个问题的最简单方法可能是直接指示Docker使用可用于网络的DNS。首先验证其地址:
$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 10.91.3.31
IP4.DNS[2]: 10.90.3.31
IP4.DNS[3]: 10.90.7.14
将它们添加到名为daemon.json
的新配置文件中:
$ sudo pico /etc/docker/daemon.json
并插入以下内容:
{
"dns": ["10.91.3.31", "10.90.3.31", "10.90.7.14"]
}
然后重新启动服务:
$ sudo service docker restart
答案 2 :(得分:0)
一个原因可能是您的代理未在Docker文件中设置,请在Dockerfile中添加以下两行:
ENV http_proxy "http://www-proxy.x.com:80"
ENV https_proxy "http://www-proxy.x.com:80"
请在此更新您的代理。 而且不要写
ENV HTTP_PROXY "http://www-proxy.x.com:80"
因为env变量区分大小写
答案 3 :(得分:0)
添加
ENV http_proxy "http://www-proxy.x.com:80"
ENV https_proxy "http://www-proxy.x.com:80"
在我的Docker文件末尾对我有用。