zukucode
主にWEB関連の情報を技術メモとして発信しています。

wsl2にインストールしたDockerのコンテナ内でネットワークエラーが発生する場合の対処法

wsl2UbuntuにインストールしたDockerのコンテナ内で、ネットワークエラーが発生したことがありましたので、対処法を紹介します。

現象

以下のベースイメージをビルドしたものを起動して。.NET6ASP.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を使いこなすにはネットワーク関連の勉強もしないと駄目ですね。。


関連記事