2017/10/22

Windows Containters 1709 or 2016 on Windows Server version 1709

※ちょっと表現を訂正。Windows Server 1709 → Windows Server バージョン1709 (大事なことらしい)

前回、Windows Server バージョン1709 の Hyper-V 環境を作りましたが(Windows Server version 1709 と Windows 10 ver 1709 と Hyper-V)、続いてコンテナー環境も作ってみました。以下のように、Windows Server バージョン1709 ベースのコンテナー (microsoft/nanoserver:1709とmicrosoft/windowsservercore:1709)を Windows Server コンテナーまたは Hyper-V コンテナーとして実行できます。また、Windows Server 2016 ベースのイメージを Hyper-V コンテナーとして実行することもできました。Linux コンテナーに関してはまだプレビュー段階で、このとき(速報:Hyper-V コンテナーで Linux コンテナーが動いた!)からそれほど状況に変化ないみたい。


手順は、以下の通りで大丈夫でした。(まだ Insider のドキュメントがありますが、そちらに惑わされないように!)

Windows Containers on Windows Server
[URL] https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/quick-start-windows-server


具体的には...

Windows Server バージョン1709 のコマンドプロンプトを開いて、Hyper-V コンテナーをサポートするために Hyper-V を有効化 (これは前回実行済み)。

C:\> start powershell
PS C:\> Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

Containers 機能と Docker バイナリのセットアップ。

C:\> start powershell
PS C:\> Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
PS C:\> Install-Package -Name docker -ProviderName DockerMsftProvider
PS C:\> Restart-Computer -Force

(10/22時点では Docker EE 17.06.1-ee-2 が最新)

Windows Server バージョン1709 ベースのイメージを取得。タグ :1709 を明示的に指定する必要があります。(これらで作成したコンテナーを実行できるのは Windwos Server バージョン1709 & Windows 10 ver 1709 のホストだけ!) 展開サイズ(ダウンロードサイズ)はそれぞれ 236MB(81.04 MB)、1.07GB (252.7 MB)で、nanoserver で lastest の 1/5 程度、windowsservercore で latest の 1/2 程度。

C:\> docker pull microsoft/nanoserver:1709
C:\> docker pull microsoft/windowsservercore:1709

Windows Server 2016 ベースのイメージを取得。タグ : latest は省略可。 (これらで作成したコンテナーを実行できるのは Windwos Server バージョン1709、Windwos Server 2016、Windows 10 ver 1607、Windows 10 ver 1703 のホスト)

C:\> docker pull microsoft/nanoserver:latest
C:\> docker pull microsoft/windowsservercore:latest

microsoft/nanoserver と microsoft/windowsservercore のリリース情報&タグ情報はこちら。(Windows Server 2016 ベースなど日本語版のイメージ:10.0.14393.1770_ja-jpがあることにいまさら気付くなど。)

[URL] https://hub.docker.com/r/microsoft/nanoserver/tags/
[URL] https://hub.docker.com/r/microsoft/windowsservercore/tags/


で、以下にすごく重要なことが書いてあるのですが、Windows Server バージョン1709 で Windows Server 2016 ベースのコンテナーは動く(Hyper-V コンテナーとして)けど、その逆はできません。Windows Server 2016 や Windows 10 1607、Windows 10 1703 の既存のコンテナー環境では、Windows Server バージョン1709 ベースのコンテナーはサポートされないってこと。

Container Images are now out for Windows Server version 1709!
[URL] https://blogs.technet.microsoft.com/virtualization/2017/10/18/container-images-are-now-out-for-windows-server-version-1709/

"It is important to note that while older versions of the base OS container images will work on a newer host (with Hyper-V isolation), the opposite is not true. Container images based on Windows Server version 1709 will not work on a host using Windows Server 2016."

"古いバージョンのベース OS イメージ(ver 2016、build 14393)は新しいホスト(ver 1709、build 16299)で動くよでも Hyper-V コンテナーでね!)、でもその逆はできないよ。Windows Server バージョン1709 ベースのコンテナーイメージは、Windows Server 2016 を使用するホストでは動かないよ!"
古いベース OS イメージは --isolation=hyperv オプションを指定しないと、こんな感じでエラーに。


古いバージョンのホスト(以下の例は Windows 10 ver 1607 のコンテナー環境)で 1709 のベース OS イメージを取得しようとすると、こんなエラー。
"failed to register layer: re-ecec error: exit status 1: output: ProcessUtilityVMImage ... The system cannot find the path specified."

0 件のコメント: