環境
- 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
- Nano Server:20H2の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
Nano Server:20H2のDockerイメージで.NETのバージョンを調べる
Nano Server:20H2のDockerイメージを取得する。
Container Base ImageからNano Serverを選択する。Full Tag Listingにある20H2-amd64を試す。
$ cd C:\Temp\dotnet $ docker pull mcr.microsoft.com/windows/nanoserver:20H2-amd64
イメージのサイズは262.83MBになっている。

Dockerfileを作成する。
C:\Temp\dotnet\DotNetVersions\Dockerfile
FROM mcr.microsoft.com/windows/nanoserver:20H2-amd64 WORKDIR /app CMD [ "cmd", "/S", "/C", "dotnet", "--version" ]
Dockerイメージをビルドする。
$ cd C:\Temp\dotnet\DotNetVersions $ docker build --tag nanoserver20h2-amd64:dotnetversions .

Dockerイメージをコンテナとして実行する。"--detach"オプションでバックグラウンド実行にすると出力が表示されない。
$ cd C:\Temp\dotnet\DotNetVersions $ docker run --name NanoServer-20H2-amd64-DotNetVersions nanoserver20h2-amd64:dotnetversions 'dotnet' is not recognized as an internal or external command, operable program or batch file.
SDKが入っていないと"dotnet"コマンドがない。
参考情報
- Switch between Windows and Linux containers | Docker Desktop for Windows user manual | Docker Documentation
- Get started: Prep Windows for containers | Microsoft Docs
- Windows Container Base Images | Microsoft Docs
- Nano Server | Docker Hub
- Long-Term Servicing Channel (LTSC) | Windows Server Servicing channels | Microsoft Docs
- Semi-Annual Channel | Windows Server Servicing channels | Microsoft Docs
- Sample Dockerfile | Build and run your image | Docker Documentation
- Run your image as a container | Build and run your image | Docker Documentation
- How to check that .NET is already installed | Check installed .NET versions on Windows, Linux and macOS | Microsoft Docs
Nano Serverのフォルダ構造を確認する
Dockerfileを作成する。
C:\Temp\dotnet\DotNetVersions\Dockerfile
FROM mcr.microsoft.com/windows/nanoserver:20H2-amd64 WORKDIR /app CMD [ "cmd", "/S", "/C", "dir", "C:\\" ]
Dockerイメージをビルドする。
$ cd C:\Temp\dotnet\DotNetVersions $ docker build --tag nanoserver20h2-amd64:dotnetversions .
Dockerイメージをコンテナとして実行する。"--detach"オプションでバックグラウンド実行にすると出力が表示されない。
$ cd C:\Temp\dotnet\DotNetVersions $ docker run --name NanoServer-20H2-amd64-DotNetVersions nanoserver20h2-amd64:dotnetversions Volume in drive C has no label. Volume Serial Number is B207-988E Directory of C:\ 11/27/2020 03:17 PM <DIR> app 11/06/2020 07:09 PM 5,510 License.txt 11/06/2020 07:11 PM <DIR> Users 11/27/2020 03:39 PM <DIR> Windows 1 File(s) 5,510 bytes 3 Dir(s) 21,303,934,976 bytes free
同様にして階層を辿った結果を示す。.NETは入っていないように思える。
C:\ |-License.txt | +-Users | +-ContainerAdministrator (File Not Found) | +-ContainerUser (空フォルダ) | +-Public (空フォルダ) | +-Windows +-AppCompat +-apppatch +-Branding +-DiagTrack +-Globalization +-INF +-L2Schemas +-LiveKernelReports +-PolicyDefinitions +-ServiceProfiles +-ServiceState +-System32 +-SystemResources +-SysWOW64 +-Temp +-WaaS