web-dev-qa-db-ja.com

Dockerはhttp://deb.debian.org/debian/dists/jessie/InReleaseを取得できませんでした

私の家でドッカーイメージを構築しようとすると、奇妙な問題が見つかりましたが、それがブラウザに関連するのか、ネットワークの問題にのみ関連するのかはわかりません。

だからここに私が得たものがあります。 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も表示されました。

DockerイメージはRuby:2.3.1に基づいています。

[〜#〜] update [〜#〜]

ハウスプロバイダー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'
9
Petra Barus

/ etc/default/dockerファイルは、「upstart」および「SysVInit」を使用するシステムでのみ使用され、systemdを使用するシステムでは使用されません。

これはファイルの先頭にも記載されています: https://github.com/docker/docker/blob/44fe8cbbd174b5d85d4a063ed270f6b9d2279b70/contrib/init/sysvinit-debian/docker.default#L1

したがって、/ etc/default/dockerを使用しないでください。これは、16.04以降Ubuntuで使用されていないupstartでのみ使用されます。

ここに記載されている/etc/docker/daemon.jsonを使用します。 https://docs.docker.com/engine/reference/commandline/dockerd/#/linux-configuration-file

ここで、dnsを設定できます

3
Robert

debian:stableに由来する cartoza/postgis イメージを構築するこの問題に対処しました。これは、一部の一般的なパブリックDNSがこのネットワークから到達できないために発生します。例:

$ nslookup duckduckgo.com 8.8.8.8
;; connection timed out; no servers could be reached

おそらくこれを回避する最も簡単な方法は、ネットワークで利用可能なDNSを使用するようにDockerに直接指示することです。住所を確認することから始めます。

$ 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
1
Luís de Sousa