Dockerでbuildするぞーみたいなときに、どうもネットワーク周りのエラーで処理が完了しない。あたしの手元で起きた症状は、pipインストールするにもパッケージを落としてくることができず、リトライを繰り返して死ぬというもの。
Step 4/14 : RUN pip install –upgrade pip && pip install -r /app/requirements.txt
(docker buildのログ抜粋)
—> Running in d75750d3ae36
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘NewConnectionError(‘: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution’)’: /simple/pip/
Failed to establish a new connection.
あーもうはいはいってくらいあちこちで見かけるやつだが、Dockerでこれって一体?
調べてみると、どうも一部ではよく知られた話っぽくて、対処法もある。
DockerのLinuxコンテナ内で名前解決エラーに困っていたら、もくもく会参加者に助けられた話 – Qiita
https://qiita.com/tatamiya/items/d40dab5bb7b23be3548f
うちの場合は、daemon.jsonというファイルを探して(Windowsだと二箇所以上にあるかもしれない。ProgramData\Docker\configと、Users\YOU\.dockerの二箇所)、以下を追記した。
{"dns": ["8.8.8.8", "8.8.4.4"]}
んでDockerをリスタートして、おわり。無事ビルドできるようになってめでたしめでたし。
じつはもともとDockerの設定はこうなってるんだけども、それとは別にjsonへの追記がいるってことなのね?このへんちょっとピンときてない。