WSL2 上の Docker container で名前解決が異常に遅い
個人PCでは Windows で WSL2 と WSL2 backend な Docker Desktop を使って開発しているが、Docker container 上での名前解決が異常に遅い。
調査していると、どうも Hyper-V のネットワークまわりに問題がありそうだが、具体的にどこがおかしいのかはわからなかった。
とりあえず Docker が使用するDNSリゾルバを以下のように 8.8.8.8
に変更したところ問題が解決した。
Docker daemon config:
{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "dns": [ "8.8.8.8" ], "experimental": false }
変更後は Docker Desktop を再起動する。
ついでにWSL上でも名前解決が遅かったので、以下のようにしてDNSリゾルバを 8.8.8.8
に変更して解決した。
/etc/wsl.conf:
[network] generateResolvConf = false
/etc/resolv.conf:
nameserver 8.8.8.8
変更後はWindows側で wsl.exe --shutdown
をして再起動する。
なお、このときの環境は以下のとおりである。
- OS: Windows 11 Pro
- バージョン: 21H2
- ビルド番号: 22000.466
- WSL:
- WSLバージョン: 0.51.2.0
- カーネル バージョン: 5.10.81.1
- WSLgバージョン: 1.0.30
- Linuxディストリビューション: Ubuntu 20.04.3 LTS
- WSLバージョン: 2
- Docker Desktop: 4.4.3 (73365)
- Engine: 20.10.12
- Compose: 1.29.2