直到几天前,Dockerfile
工作正常,当我今天再次尝试构建它时,它在终端中发出以下错误。我试过多个docker基础图像,但仍然给出了相同的错误。谁能帮我这个?我不认为我错过了任何东西。如果我错过了它应该早些时候给我错误,但为什么现在呢?
Err:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
Temporary failure resolving 'security.ubuntu.com'
Err:2 http://archive.ubuntu.com/ubuntu xenial InRelease
Temporary failure resolving 'archive.ubuntu.com'
Err:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease
Temporary failure resolving 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease
Temporary failure resolving 'archive.ubuntu.com'
Reading package lists...
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial/InRelease Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease Temporary failure resolving 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease Temporary failure resolving 'security.ubuntu.com'
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 software-properties-common
我的docker版本是
Docker version 17.03.2-ce, build f5ec1e2
这是我的Dockerfile
FROM ubuntu:16.04
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y && \
apt-get install -y software-properties-common && \
apt-add-repository ppa:webupd8team/java && \
apt-get update -y && \
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 && \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
apt-get install -y oracle-java8-installer && \
apt-get install -y oracle-java8-unlimited-jce-policy && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
答案 0 :(得分:2)
您的RUN指令中看起来有连接错误。
尝试在Ubuntu容器中执行相同的命令
docker run -it ubuntu bash
然后在容器内执行RUN命令。
在我的机器上,您的脚本可以正常工作。
答案 1 :(得分:2)
我刚刚更改了我的VM播放器网络设置。已从Network Connection
更改了bridged mode to NAT
。
现在它的工作
答案 2 :(得分:0)
<强> 概述 强>
你的问题分为两部分:
1.修复临时解决信息
2.修复包管理问题
暂时解决
这个问题很可能是:
1.由于您的Internet服务提供商未正确将Internet命名(DNS)转发到其或外部DNS服务器,或者由于
2.由于您的网络更改同样阻止了此命名 - 例如,新的路由器/调制解调器,使用新配置重新配置交换机。
让我们看看可能的DNS解决问题。
首先,暂时将已知的DNS服务器添加到您的系统中。
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
然后运行sudo apt update
。
如果这样可以修复您的临时解析消息,那么请等待24小时,看看您的ISP是否为您解决了问题(或者只是联系您的ISP) - 或者您可以永久地将DNS服务器添加到您的系统中:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolvconf/resolv.conf.d/base > /dev/null
8.8.8.8
是Google自己的DNS服务器。
您可以使用的另一个示例DNS服务器是OpenDNS - 例如:
echo "nameserver 208.67.222.222" | sudo tee /etc/resolvconf/resolv.conf.d/base > /dev/null
包管理问题
除了临时解决问题之外,还有一些需要纠正的包管理问题 打开终端并输入: -
sudo nano /etc/apt/sources.list
并查看您是否从正确的源包中下载。
或
如果您支持代理使用-E.例如: -
sudo -E apt-get update
答案 3 :(得分:0)
一个简单的方法是将nslookup archive.ubuntu.com
IP写入/etc/hosts
,然后重启docker。
当然,它需要你的docker /etc/docker/daemon.json
使用主机的IP。
答案 4 :(得分:0)
对我有用的解决方案是
检查我的主机/etc/resolv.conf
-寻找名称服务器x.x.x.x
将那里的名称服务器复制到我的主机的/etc/docker/daemon.json
sudo su
的顺序cd /etc/docker
nano daemon.json
{
"dns": ["x.x.x.x", "z.z.z.z", "8.8.8.8"]
}
x.x.x.x和z.z.z.z可能是您的名称服务器 8.8.8.8是Google的,您可以尝试。
sudo service docker restart
随着时间的流逝,我(在家中)的名称服务器发生了变化,所以我有几个,或者我不时要添加到该文件中。如果您在其他地方使用Internet,它也可能会发生变化-因此,这并不总是最好的解决方案。
答案 5 :(得分:0)
就我而言,daemon.json 中禁用了桥接网络。
如下修复后,它起作用了。
root@pc:/etc/docker# cat daemon.json
{
"iptables": true,
"bridge": "docker0"
}
不要忘记重新启动:
sudo service docker restart
我还使用了以下有用的命令来调查这个问题:
# List networks (it should have 3 lines bridge, host, none)
docker network ls
# Check the logs, it will have docker log
journalctl -xe
# This one showed me at the end that bridge was missing iptables config like below
# WARNING: bridge-nf-call-iptables is disabled
# WARNING: bridge-nf-call-ip6tables is disabled
docker info