マイクロソフト、「.NET 7」にDockerコンテナイメージ生成機能を搭載、Dockerファイル不要に

マイクロソフトは現在開発中のアプリケーションフレームワーク「.NET 7」に、Dockerコンテナの生成機能を搭載する予定であることを明らかにしました

fig

これまで.NETアプリケーションをDockerコンテナ化するには、Dockerコンテナイメージの生成に必要なファイルを記述したDockerファイルを作成し、ビルドツールを用いて生成する必要がありました。

新たに.NET 7で搭載されるDockerコンテナイメージの生成機能ではDockerファイルの作成などは不要で、標準のdotnetコマンドを実行することで簡単にDockerコンテナイメージが生成されるようになります。

Linux版のDockerイメージ生成に対応、今後Windows版の開発も進める

下記はマイクロソフトが紹介した、.NET 7を用いてDockerコンテナイメージを生成し、実行するまでのコマンドのサンプルです(一部横幅が足りなくて改行されているコマンドがあります)。これだけ簡単に生成から実行まで可能だと示されています。

# create a new project and move to its directory
dotnet new mvc -n my-awesome-container-app
cd my-awesome-container-app

# add a reference to a (temporary) package 
# that creates the container
dotnet add package Microsoft.NET.Build.Containers

# publish your project for linux-x64
dotnet publish --os linux --arch x64 -p:PublishProfile
=DefaultContainer

# run your app using the new container
docker run -it --rm -p 5010:80 my-awesome-container-app:1.0.0

今回、Dockerコンテナイメージのターゲットとなるのはx86プロセッサ向けのLinux版です。ベースイメージのLinuxディストリビューションにはDebianが選択されています。

Debianが選択された理由として、「We think that the choice of defaulting to the Debian-based versions of the runtime images is the best choice for broad compatibility with most applications’ needs.」(Debianベースのランタイムイメージを選択したのは、これが幅広い互換性とアプリケーションのニーズにとって最適だと私たちが考えたからです)と説明しています

.NET 7の正式リリースは今年(2022年)11月。そのときにはこれらの機能が搭載される予定です。マイクロソフトは今後、リモートレジストリへのプッシュ機能、Windows版のDockerコンテナイメージやx64以外のプロセッサ対応も進めていくとしています。

.NET 7はネイティブコンパイラも搭載予定

.NET 7はネイティブコンパイラの搭載も計画されており、開発が進んでいます。.NET 6で長期サポート版(LTS)が登場し、.NET MAUIも正式リリースとなったことで.NET Framework、.NET Core、Xamarinの統合が一段落したといえる.NETは、次の.NET 7でいろいろと強化されていくことになりそうです。