Introduction
開発中のOSSでWindows Server Coreへの対応についてのissueがあったので、調査がてら導入してみる。
Windows Server 2016を使います。
評価版で検証を行います。
How to
下記の方が教えてくれました。
Windowsの最新化
全てのセキュリティパッチを含む更新を行います。
コンテナの有効化
役割と機能の追加からコンテナを有効化します。
インストール
管理者権限でPowerShellを起動。
場合によっては下記のように Nuget の更新が必要になりますが、その場合はYesと答え、もう一度コマンドを実行します。
1 | > Install-Module -Name DockerMsftProvider -Repository PSGallery –Force |
パッケージソースからのインストールを信頼するかどうかの確認。
Yesと答えます。
少し時間がかかりますが、待っているとインストールが完了します。
完了後、再起動します。
再起動後、dockerをインストールします。
1 | PS C:\Users\Administrator> Install-Package -Name docker -ProviderName DockerMsftProvider |
確認
1 | > docker version |
実行
コードの用意
動かしたいサンプルは
- Windows Server Core 2016
- dotnet core のコンソール
となります。
コードは下記になります。
1 | using System; |
コンテナ内でソースを用意するのは面倒なので、あらかじめ用意しておいて、ビルド時にコピーするようにします。
サンプル実行
下記のDockerfileを作成します。
1 | FROM mcr.microsoft.com/windows/servercore:10.0.14393.2665 |
そして実行。
dotnetの初回起動時の復元処理に時間がかかります。
終わらなかったら、一度Ctrl+CでbuildをキャンセルするとOKです。
1 | $ docker build -t test . |
詳細なバージョン情報も表示してみます。
1 | powershell [System.Environment]::OSVersion |