2017-06-30 123 views
4

直到幾天後Dockerfile工作正常,當我試圖再次建立它今天它在終端給出以下錯誤。我嘗試了多個碼頭基礎圖像,但仍然給出了相同的錯誤。誰能幫我這個?我不認爲我錯過了任何東西。如果我錯過了它本應早些時候給我錯誤,但爲什麼現在呢?Dockerfile無法建立

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 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

看起來像一個連接錯誤。 Docker無法找到有關當前ubuntu AND的信息,忽略該警告後無法獲得軟件屬性通用包。你有任何代理或連接問題? – Gabbax0r

+0

不是。連接很好。我現在該怎麼辦?有沒有解決方案 –

+0

絕對是一個連接問題。我試過你的Dockerfile,它工作完美。 可以試試'install -y --no-install-recommendation'? – Mornor

回答

2

我剛更改了我的VM播放器網絡設置。從bridged mode to NAT更改Network Connection。 現在它的工作

2

看起來你在你的運行指令連接錯誤。

嘗試在Ubuntu容器中執行相同的命令。
docker run -it ubuntu bash

然後在容器內執行你的RUN命令。

在我的機器上,您的腳本確實有效。

+0

我可以執行'ubuntu'容器,但無法執行'apt-get update'。如何解決這個問題?即使我嘗試重新安裝所有東西(新的VM與碼頭) –

+0

OKAY。我只是改變了我的VM播放器網絡設置。將「網絡連接」從「橋接模式」更改爲「NAT」。現在它的工作。 –

+0

太棒了,有時VM網絡設置可能會很痛苦^^ –

2

如果您的主機是Ubuntu虛擬機,它可能是一個無效的/etc/resolve.conf。查看主機Ubuntu VM上的/etc/resolv.conf。如果它包含nameserver 127.0.1.1,那是錯誤的。

運行Ubuntu的主機上的虛擬機這些命令進行修復:

sudo vi /etc/NetworkManager/NetworkManager.conf 
# Comment out the line `dns=dnsmasq` with a `#` 

# restart the network manager service 
sudo systemctl restart network-manager 

cat /etc/resolv.conf 

現在/etc/resolv.conf應該有一個域名服務器的有效值,這將是由泊塢窗容器被複制。

+0

這對我有用。謝謝! – Karimi

0

概述
有兩個部分你的問題:
1.固定的臨時解決信息
2.固定包管理問題

臨時解決
它是可能的此問題是:
1.暫時由於您的Internet服務提供商未正確轉發Internet命名(DN S)連接到其外部DNS服務器,或者由於您的網絡發生變化而阻止了這種命名 - 例如,新路由器/調制解調器,使用新配置重新配置交換機。

讓我們看看可能的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服務器。

你可以使用

source

又如DNS服務器是OpenDNS - 例如:

echo "nameserver 208.67.222.222" | sudo tee /etc/resolvconf/resolv.conf.d/base > /dev/null 

包管理問題

除了臨時解決問題 - 你有很少有包管理問題需要糾正。
打開一個終端,輸入: -

sudo nano /etc/apt/sources.list 

和看,如果你是從右源碼包下載。

OR

如果你是代理使用-E.for例子背後: -
sudo -E apt-get update

0

一個簡單的方法可能是寫nslookup archive.ubuntu.com IP到/etc/hosts,然後重新啓動搬運工。

當然它需要你的碼頭的/etc/docker/daemon.json使用主機的IP。