環境
- Windows 10 Pro 20H2 19042.630
- .NET SDK 5.0.100 (x64)
- Visual Studio Code 1.51.1
- Docker Desktop for Windows 2.5.0.1 (49550) / Windows Container
- .NET RuntimeのDockerイメージ
.NET SDK 5.0をホスト環境にインストールする
Download .NETから.NET SDK x64をダウンロードする。

.NET SDK x64のインストーラーを実行する。
dotnet-sdk-5.0.100-win-x64.exe
.NETのバージョンを確認する。
$ dotnet --version 5.0.100
参考情報
- Download .NET / Downloads for .NET Framework and .NET Core, including ASP.NET and ASP.NET Core
- dotnet command - .NET Core CLI | Microsoft Docs
.NETでHello World!アプリケーションを実行する
コンソールアプリケーションのプロジェクトを作成する。
$ cd C:\Temp\dotnet $ dotnet new console -o myApp The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on myApp\myApp.csproj... 復元対象のプロジェクトを決定しています... C:\Temp\dotnet\myApp\myApp.csproj を復元しました (53 ms)。 Restore succeeded.
プロジェクトを実行する。
$ cd C:\Temp\dotnet\myApp $ dotnet run Hello World!
ソースを書き換えて現在日時を出力する。
C:\Temp\dotnet\myApp\Program.cs
using System; namespace myApp { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine("The current time is " + DateTime.Now); } } }
プロジェクトを実行する。
$ cd C:\Temp\dotnet\myApp $ dotnet run Hello World! The current time is 2020/11/28 14:58:47
参考情報
.NET RuntimeのDockerイメージでHello World!アプリケーションを実行する
Hello World!アプリケーションをリリースビルドする。
$ cd C:\Temp\dotnet\myApp $ dotnet publish -c Release .NET 向け Microsoft (R) Build Engine バージョン 16.8.0+126527ff1 Copyright (C) Microsoft Corporation.All rights reserved. 復元対象のプロジェクトを決定しています... 復元対象のすべてのプロジェクトは最新です。 myApp -> C:\Temp\dotnet\myApp\bin\Release\net5.0\myApp.dll myApp -> C:\Temp\dotnet\myApp\bin\Release\net5.0\publish\
"-o"オプションを指定しない場合は次のフォルダに出力される。
C:\Temp\dotnet\myApp\bin\Release\net5.0\publish
.NET RuntimeのDockerイメージを取得する。
.NETのDockerイメージ > .NET RuntimeのDockerイメージを辿って"Windows Server, version 2009 amd64 Tags"から.NET Runtimeを含むNano ServerのDockerイメージを取得する。
$ cd C:\Temp\dotnet\myApp $ docker pull mcr.microsoft.com/dotnet/runtime:5.0.0-nanoserver-2009
Dockerfileを作成する。
C:\Temp\dotnet\myApp\Dockerfile
FROM mcr.microsoft.com/dotnet/runtime:5.0.0-nanoserver-2009 WORKDIR /app COPY ./bin/Release/net5.0/publish . ENTRYPOINT [ "dotnet", "myApp.dll" ]
Dockerイメージをビルドする。
$ cd C:\Temp\dotnet\myApp $ docker build --tag net-5-nano-2009-amd64:helloworld .
Dockerイメージをコンテナとして実行する。"--detach"オプションでバックグラウンド実行にすると出力が表示されない。
$ cd C:\Temp\dotnet\myApp $ docker run --name Net-5-Nano-2009-amd64-HelloWorld net-5-nano-2009-amd64:helloworld Hello World! The current time is 11/28/2020 3:49:28 PM
参考情報
- dotnet publish | Microsoft Docs
- Publish .NET Core apps with the .NET Core CLI | Microsoft Docs
- Understand how CMD and ENTRYPOINT interact | Docker Documentation