Docker Hubから.NET Core 2.1 イメージが削除されます
いわさです。
ご存知の方も多いと思いますが、2021年8月21日で.NET Core 2.1のサポートが終了します。
そして、AWS Lambdaでも非推奨フェーズに入ります。
2021年9月20日からPhase1(セキュリティパッチなどが適用されなくなる)となり、2021年10月20日からPhase2(関数の作成または更新が出来なくなる)となります。
実は、上記以外に影響が出そうなイベントがあります。
Docker Hubからイメージが削除される
Docker Hubから .NET Core 2.1のコンテナイメージが削除されるとのことで、Microsoft Container Registry(MCR)のイメージを使うように案内がされています。
Microsoftは2018年5月以降、一部のイメージをDocker Hubに残しつつ、MCRにも用意をしていました。
削除後にDocker Hubのイメージを参照している場合、例えばCI/CDパイプラインや、コンテナのビルドで失敗することになりそうです。
対応
先程のこちらのリンクにDocker HubコンテナイメージとMCRコンテナイメージの対応表が掲載されています。
イメージの内容はどちらも同じものです。
DockerFileであれば以下のように修正するのが良いですね。
Before
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /src COPY ["hogecore2.csproj", "hogecore2/"] RUN dotnet restore "hogecore2/hogecore2.csproj" COPY . ./hogecore2/ WORKDIR "/src/hogecore2" RUN dotnet build "hogecore2.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "hogecore2.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "hoge.dll"]
After
FROM mcr.microsoft.com/dotnet/aspnet:2.1 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:2.1 AS build WORKDIR /src COPY ["hogecore2/hogecore2.csproj", "hogecore2/"] RUN dotnet restore "hogecore2/hogecore2.csproj" COPY . . WORKDIR "/src/hogecore2" RUN dotnet build "hogecore2.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "hogecore2.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "hogecore2.dll"]
ちなみに、Visual StudioのDockerサポート機能などで自動生成されるDockerFileは既に対応済みでした。
まとめ
ランタイムのサポートが切れるということで、.NET Core 3や5に移行済みの方がほとんどだとは思いますが、事情があって移行出来ていない あるいは移行の目処が立っていない方もゼロではないはずです。
ランタイムのアップデートがもちろん推奨されますが、難しい場合は参照先コンテナレジストリの変更だけでも対応しておきましょう。