web-dev-qa-db-ja.com

Dockerでの名前解決[Errno -3]の一時的な失敗

docker tutorial をフォローしており、次を使用してアプリをビルドする必要がある部分にいます:

docker build -t friendlyhello .

ステップ4まで進み、一時停止後にこのエラーが表示されます。

Step 4/7 : RUN pip install -r requirements.txt
 ---> Running in 7f4635a7510a
Collecting Flask (from -r requirements.txt (line 1))

Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after 
connection broken by
'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection 
object at 0x7fe3984d9b10>: Failed to establish a new connection: 
[Errno -3] Temporary failure in name resolution',)': /simple/flask/

このエラーが何を意味するのか、どうすれば解決できるのかよくわかりません。

ご協力いただきありがとうございます!

25
monadoboi

Ubuntu 16.04とDockerバージョン17.09.0-ceでも同じ問題が発生しました。 DNSマスクを無効にすることは正しい解決策ではないと思います。

ここに私がそれを解決した方法があります:

Ubuntuの場合

/ etc/default/dockerを編集し、DNSサーバーを次の行に追加します。

DOCKER_OPTS="--dns 8.8.8.8 --dns 10.252.252.252"

参照: Docker-企業ネットワークでのイメージ構築中にネットワーク呼び出しが失敗する

17
Jack Fan

この投稿は私にも役立ちました!

Dns mask[sic]disableで解決:

Sudo vim /etc/NetworkManager/NetworkManager.conf

dns = dnsmasqをコメントアウト->#dns = dnsmasq

Sudoサービスネットワークマネージャーの再起動(または再起動VM)

from: https://github.com/moby/moby/issues/263

13
bkasap

bkasapの答えは、私が言うに誇張されているシステムの機能を変更します。さらに、Dockerにはそのためのオプションがあるためです。それを行う新しい方法は

$ Sudo vi /etc/docker/daemon.json

次のコンテンツを追加します

{
    "dns": ["8.8.8.8", "8.8.4.4"]
}

することを忘れないでください

Sudo service docker restart
4
JAR

Docker-ce 17のUbuntu 16.04.1マシンでも同じ問題が発生しています。ネットワークのDNSマスクを無効にすることで修正されました。

Sudo nano /etc/NetworkManager/NetworkManager.conf 

Ctrl + O保存してEnter終了Ctrl + Xを押す

以下のコマンドを実行して、ネットワークサービスを再起動します。

Sudo service network-manager restart

この後、docker buildコマンドを実行すると、すべてが正常に機能します。

4
Abhilash

今やりました Sudo service docker restartそして、それは後に働きました。設定を変更するために飛び込む前に、一見の価値があります。

4
David Warnke

馬鹿げていますが、このエラーが発生したときにVPNが接続されていました。

VPNを切断した後、PIPは再び機能し始めました。

2
James Anderson

このエラーは、Dockerコンテナーがネットワークにアクセスできないことを意味します。 systemdバージョン220以降、特定のネットワークの転送設定(net.ipv4.conf..forwarding)はデフォルトでオフになっています。この設定により、IP転送が防止されます。また、コンテナ内でnet.ipv4.conf.all.forwarding設定を有効にするというDockerの動作とも競合します。

コンテナがネットワークの内部にあるホストを解決する必要がある場合、パブリックネームサーバーは適切ではありません。次の2つの選択肢があります。

  1. Dockerが使用するDNSサーバーを指定できます。または
  2. NetworkManagerでdnsmasqを無効にできます。これを行うと、NetworkManagerは本当のDNSネームサーバーを/etc/resolv.confに追加しますが、dnsmasqの利点を失う可能性があります。これらの方法のいずれかを使用するだけです。

これらの手順を実行する方法について読むことができます here

1
Abhishek Jha

Windows 10 Proでこの問題が発生したため、トレイのドッカーアイコンを右クリックして[再起動...]を選択することで解決しました。数分かかり、ネットワークは再び正常に動作しました。

0