[wsl2 / Ubuntu] apt installができなくなる問題の対処


前提

wsl環境上でDockerを使っている場合のお話です。

症状

docker-compose buildで、docker imageをビルドしようとしたところ、
Dockerfile内のapt installのところで次のエラーが発生。

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'

alpineイメージを使っている場合

Dockerfile内のapk addのところで次のようなエラーが出た

Step 2/8 : RUN apk add --no-cache libstdc++ libgcc     bash vim     && pip install --upgrade pip
 ---> Running in b328299760c6
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.14/main: temporary error (try again later)
fetch https://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.14/community: temporary error (try again later)
ERROR: unable to select packages:
  bash (no such package):
    required by: world[bash]
...(以下略)

対策

今のところこの対策でうまくいっている。

具体的には、docker-compose buildを実行する環境上で、
まず次の二つのファイルを編集・作成。

編集・作成するファイル

/etc/resolv.conf
nameserver 8.8.8.8
/etc/wsl.conf
[network]
generateResolvConf = false

これで、wsl起動の度に/etc/resolv.confが毎回作成されてしまうのを防ぐことができるとのこと。

wsl再起動

今度は、その環境の外、つまりホストPCのOS側からwslを再起動。
私はpowershellから実行した。

powershell
> wsl --shutdown
> wsl -d Ubuntu

一応、今はこれでなんとか動くようになった。

補足

wsl --shutdownapt-get updateを実行するだけで治ると書いている記事もあるが、私の環境では、それらは効果がなかったです(´;ω;`)ブワッ