Dockerコンテナでapt-getするとエラーになる場合の対処方法(Err:1 http://security.debian.org /debian xxx InRelease)(Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease Temporary failure resolving ‘deb.debian.org’)

2020年9月13日Docker

Dockerfileのapt-getでエラーになる

dockerで開発していると、昨日まで動作していたのに突然apt-getコマンドでエラーにあることがあります。

こんなエラーです。

Err:1 http://deb.debian.org/debian buster InRelease
  Temporary failure resolving 'deb.debian.org'
Err:2 http://security.debian.org/debian-security buster/updates InRelease
  Temporary failure resolving 'security.debian.org'
Err:3 http://deb.debian.org/debian buster-updates InRelease
  Temporary failure resolving 'deb.debian.org'
Reading package lists...
W: Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease  Temporary failure resolving 'deb.debian.org'
W: Failed to fetch http://security.debian.org/debian-security/dists/buster/updates/InRelease  Temporary failure resolving 'security.debian.org'
W: Failed to fetch http://deb.debian.org/debian/dists/buster-updates/InRelease  Temporary

対策1:ホスト側のDNS設定を行う

コンテナのDNS設定はホスト側の設定がそのまま利用されます。

そのため、ホスト側のDNS設定を修正することで解決することがあります。

修正するファイル

/etc/resolv.conf

以下の2行を追加します。

nameserver 8.8.8.8
nameserver 8.8.4.4

再度、docker buildコマンドを実行して確認してください。

WSLの注意点

WSLの /etc/resolv.conf はWSLを再起動すると、初期設定に戻ってしまいます。

<初期設定に戻さないようにする手順>

  • /etc/wsl.conf を以下の内容で作成する
[network]
generateResolvConf = false
  • /etc/resolv.conf を削除する
  • /etc/resolv.conf を以下の内容で作成する
nameserver 8.8.8.8
nameserver 8.8.4.4

これでもエラーになる場合は、次の対策2を実行しましょう。

対策2:ホスト側でapt-getコマンドを実行する

このエラーが出た場合の対策を調べた際に、ほとんどがネットワークの問題でDNSの設定を変更すると解決するとありましたが、私の場合はそれでも同じエラーが発生しました。

ダメもとで、ホスト側でapt-get updateコマンドを実行すると解決しました。

$ sudo apt-get update

この後、docker buildコマンドを実行すると無事apt-getコマンドが成功しました。

Docker

Posted by snow