macOSでmcr.microsoft.comのイメージレジストリからdotnet core SDKの3.1バージョンのマニフェストが見つからなかったときの対処メモです。
DockerfileでFROM mcr.microsoft.com/dotnet/core/sdk:3.1
と指定して利用しようとしたのですが、以下のようなエラーになりました。
=> ERROR [internal] load metadata for mcr.microsoft.com/dotnet/core/runtime:3.1 0.1s => CANCELED [internal] load metadata for mcr.microsoft.com/dotnet/core/sdk:3.1 0.1s ------ > [internal] load metadata for mcr.microsoft.com/dotnet/core/runtime:3.1: ------ failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head "https://mcr.microsoft.com/v2/dotnet/core/runtime/manifests/3.1": EOF
apple siliconのM1 Macだからなのかなと思ったけど、そうでもなさそうだった。
解決策
マイクロソフトの公式サイトの.NET の macOS へのインストールに書いてありました。
サポートされているリリース サポートされるリリースには、長期サポート (LTS) リリースと Standard Term Support (STS) の 2 種類があります。 すべてのリリースの品質は同じです。 唯一の違いは、サポートの長さです。 LTS リリースでは、3 年間無料のサポートとパッチが提供されます。 STS リリースでは、18 か月間無料のサポートとパッチが提供されます。 詳細については、「サポート ポリシー」を参照してください.NET。
次の表は、現在サポートされている .NET リリースと、それらがサポートされている macOS のバージョンの一覧です。
オペレーティング システム .NET 7 (STS) .NET 6 (LTS) macOS 13.0 "Ventura" ✔️ 7.0 ✔️ 6.0 macOS 12.0 "Monterey" ✔️ 7.0 ✔️ 6.0 macOS 11.0 "Big Sur" ✔️ 7.0 ✔️ 6.0 macOS 10.15 "Catalina" ✔️ 7.0 ✔️ 6.0
これに対してサポートされていないリリースも書いてあります。
次のバージョンの .NET は ❌ サポートされなくなりました。
.NET 5 .NET Core 3.1 .NET Core 3.0 .NET Core 2.2 .NET Core 2.1 .NET Core 2.0
このように、使おうと思っている.NET Core 3.1はサポートされていません。
下の方にスクロールするとこのようなことが書いてあります。
Visual Studio for Mac を使用してインストールする をインストール.NETVisual Studio for Macワークロードが.NET選択されている場合の SDK。 macOS での開発を .NET 開始するには、「 Visual Studio 2019 for Mac をインストールする」を参照してください。
.NET SDK のバージョン Visual Studio のバージョン 7.0 Visual Studio 2022 for Mac 17.4 以降。 6.0 Visual Studio 2022 for Mac プレビュー 3 17.0 以降。 3.1 Visual Studio 2019 for Mac バージョン 8.4 以降。
翻訳がちょっとおかしそうですが、Visual Studio for Macをインストールすれば良いということなんですね。
ということで、Visual Studio for Macをインストールして再度試してみたら無事にdocker buildが通り解決しました。