私の家でドッカーイメージを構築しようとすると、奇妙な問題が見つかりましたが、それがブラウザに関連するのか、ネットワークの問題にのみ関連するのかはわかりません。
だからここに私が得たものがあります。 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'
/ 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を設定できます
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