wsl2にインストールしたDockerのコンテナ内でネットワークエラーが発生する場合の対処法
wsl2
のUbuntu
にインストールしたDocker
のコンテナ内で、ネットワークエラーが発生したことがありましたので、対処法を紹介します。
現象
以下のベースイメージをビルドしたものを起動して。.NET6
のASP.NET/C#
の開発環境を構築していたときに、パッケージをダウンロードする際にエラーになってしまいました。
- mcr.microsoft.com/dotnet/sdk:6.0-focal
具体的には、dotnet restore
コマンドで、パッケージをダウンロードする際に、Could not resolve host ...
というエラーになりました。
また、Visual Studio Code
(VSCode
)のC#
の拡張機能でOmniSharp
を内部的にダウンロードしている処理もエラーになっていました。
正常に接続できているURLもあったので、よくわからない状態でした。
対処法
DNSルックアップに失敗しているのが原因のようなので、DNSサーバーの設定を変更します。
wsl
の環境の/etc/docker
のパスにdaemon.json
というファイル名のファイルを作成します。
ファイルの中身は以下のように設定します。(8.8.8.8
はDNSサーバーにGoogle Public DNSを使用する場合の例です)
daemon.json
{
"dns": ["8.8.8.8"]
}
以下のコマンドでdockerを再起動します。
$ sudo service docker restart
これでDocker
コンテナ内でのCould not resolve host ...
というエラーは解消されました。
Docker
のネットワーク設定についての記事はネット上にたくさんありましたが、ネットワーク関連の知識がないと、理解するのが難しい内容が多く、上記の対処法にたどり着くまでに時間がかかりました。
やはりDocker
を使いこなすにはネットワーク関連の勉強もしないと駄目ですね。。