Docker未能获取http://deb.debian.org/debian/dists/jessie/InRelease

时间:2017-05-19 23:17:23

标签: docker debian

我在家中尝试构建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'

4 个答案:

答案 0 :(得分:2)

/ etc / default / docker文件仅用于使用" upstart"的系统。和" SysVInit",而不是在使用systemd的系统上。

这也在文件顶部提到: https://github.com/docker/docker/blob/44fe8cbbd174b5d85d4a063ed270f6b9d2279b70/contrib/init/sysvinit-debian/docker.default#L1

所以,不要使用/ 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文件末尾对我有用。