Windows Server, version 1909 with ContainersをJSONテンプレートからデプロイする方法Microsoft Azure最新機能フォローアップ(95)

Azureのパブリックイメージとして、2019年11月からWindows Server半期チャネル(SAC)の最新バージョン「[smalldisk]Windows Server, version 1909 with Containers」のイメージが利用可能になっています。しかし、2019年12月末時点でAzure Marketplaceにはこのイメージは表示されません。そこで、JSONテンプレートからデプロイする方法でこのイメージからAzure仮想マシンを作成する方法を紹介します。本稿が公開されるころにはAzure Marketplaceでも利用可能になっているかもしれませんが、次期バージョン「Windows Server, version 2004」(通称、20H1)がリリースされた際の参考になるでしょう。

» 2020年01月08日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Microsoft Azure最新機能フォローアップ」のインデックス

Microsoft Azure最新機能フォローアップ

Windows Server, version 1909のAzure仮想マシンのデプロイ方法

 2019年12月末日時点のAzure Marketplaceでは、Windows Server半期チャネル(SAC)のパブリックイメージとして、「Docker Enterprise for Windows Server」が定義済みとなっている以下の3バージョンが利用可能です。

  • [smalldisk]Windows Server, version 1803 with Containers
  • [smalldisk]Windows Server, version 1809 with Containers
  • [smalldisk]Windows Server, version 1903 with Containers

 なお、Windows Server, version 1803は、2019年11月に18カ月のサポートが終了した扱いですが、少なくとも12月の更新イメージ(ビルド17134.1184)は提供されました。

 2019年11月にリリースされたWindows Server, version 1909ベースのものは、2019年12月末時点では利用可能になっていませんが、パブリックイメージはリリース直後から利用可能です。

 Azure PowerShell(Azure Cloud Shellからはすぐに実行可能)で以下のコマンドラインを実行すると、SKU名「datacenter-core-1909-with-containers-smalldisk」として利用可能なイメージを確認できます(画面1)。

Get-AzureRMVMImage -Location "japaneast" -Publisher "MicrosoftWindowsServer" -Offer "WindowsServer" -Sku "datacenter-core-1909-with-containers-smalldisk"
画面1 画面1 2019年12月末時点でAzure Marketplaceに「[smalldisk]Windows Server, version 1909 with Containers」は存在しないが、使用するパブリックイメージのSKU名「datacenter-core-1909-with-containers-smalldisk」は2019年11月から利用可能

 ちなみに、Windows Server, version 1809や1903ベースのSKU名は「datacenter-core-1809-with-containers-smalldisk」や「datacenter-core-1903-with-containers-smalldisk」です。

 利用可能なWindows ServerのAzureパブリックイメージの情報については、以下のサポート情報でも確認できます。

 これらのパブリックイメージは、30GBのOSディスクに、Windows Server SACバージョン、Hyper-Vの役割、Containersの機能、Docker Enterprise 3.0のソフトウェアがセットアップ済みの環境であり、Windows Server SACベースのDockerサーバをAzure上に簡単に展開できるようにしたものです。

 Windows Server, version 1909は、Dockerのサポートに関して、重要な新機能が追加されています。詳しくは、本連載の前回(第94回)の記事を参考にしてください。

 Azure Marketplaceで「[smaldisk]Windows Server, version 1909 with Containers」が利用可能になるまでは、カスタムテンプレート(json)を作成し、テンプレートからデプロイすることで、同等のAzure仮想マシンを作成できます。

1つ前のバージョンのイメージを利用してカスタムテンプレートを作成する

 SKU名「datacenter-core-1909-with-containers-smalldisk」のパブリックイメージをデプロイするためのカスタムテンプレートを作成する最も簡単で確実な方法は、Azure PortalでAzure Marketplaceの「[smalldisk]Windows Server, version 1903 with Containers」イメージから仮想マシンをデプロイ用に構成し、最後にテンプレートをダウンロードして、それを修正する方法です(この仮想マシンはデプロイしません)。

 仮想マシンをデプロイ用に構成する際は、次の2点に留意してください。

 まず、「Hyper-V分離モード」をサポートするためには、「Hyper-Vの役割」が必須になります。そのため、仮想マシンのサイズとしては、Hyper-Vに対応した「入れ子構造の仮想化」(Nested Virtualization)をサポートするものを選択してください。例えば、全てのv3シリーズ(DSv3など)のサイズは、入れ子構造の仮想化に対応しています(画面2)。

画面2 画面2 Docker Enterprise for Windows Serverの全ての機能を利用するには、入れ子構造の仮想化をサポートするシリーズのサイズを選択する

 入れ子構造の仮想化に対応したシリーズは、以下のページで確認できます(***が付いているもの)。

 Windows Serverイメージは通常、127GBのOSディスクで構築されています。しかし、[smalldisk]のイメージはOSディスクが30GBしかありません。Windows版Docker Enterpriseでは、Dockerのアプリケーションデータ(コンテナイメージやコンテナ)の保存に既定で「C:\ProgramData\docker」ディレクトリを使用します。

 Nano Serverのイメージは数百MB程度ですが、Windows Server CoreのイメージはベースOSだけで数GBになります。数GBのイメージやコンテナが多数になると、C:ドライブはあっという間に空き領域不足に陥ってしまうでしょう。

 そこで、仮想マシンをデプロイする際、あるいはデプロイ後には、仮想マシンにデータディスクを追加して、Dockerのアプリケーションデータの場所(Dockerルートディレクトリ)を変更しましょう(画面3)。Dockerのアプリケーションデータの場所の変更方法については後で説明します。

画面3 画面3 Dockerイメージおよびコンテナのデータ格納用にデータディスクを追加しておく

 「[smalldisk]Windows Server, version 1903 with Containers」イメージをデプロイ用に構成し、検証が完了したら、「作成」ボタンはクリックせずに、「Automationのテンプレートをダウンロードする」リンクをクリックし、「テンプレート」ページの「ダウンロード」ボタンをクリックして、「template.zip」をダウンロードします(画面4画面5)。

画面4 画面4 「作成」ボタンはクリックせずに、「Automationのテンプレートをダウンロードする」リンクをクリックする
画面5 画面5 テンプレートとパラメーターを含む「template.zip」をダウンロードする

 ダウンロードが完了したら、「仮想マシンの作成」ウィザードは「×」ボタンをクリックしてキャンセルします。

 「template.zip」を展開すると、「template.json」と「parameters.json」の2つのファイルを入手できます。「template.json」をテキストエディタで開いて、SKU名「datacenter-core-1903-with-containers-smalldisk」を「datacenter-core-1909-with-containers-smalldisk」に修正すれば、「[smalldisk]Windows Server, version 1909 with Containers」相当の構成済みテンプレートの完成です。

 しかし今回は、Azureポータルにアップロードしてから、ポータル上で修正してWindows Server, version 1909の仮想マシンをデプロイしてみます。

カスタムテンプレートからデプロイする

 カスタムテンプレートからAzure仮想マシンをデプロイするには、次の手順で操作します。

 Azureポータルで「+リソースの作成」から「テンプレートのデプロイ」を開始します。「カスタムデプロイ」のページが開くので、「エディターで独自のテンプレートを作成する」をクリックし、「テンプレートの編集」ページで「ファイルの読み込み」をクリックして、準備しておいた「template.json」をアップロードします。

 テンプレートが読み込まれたら「datacenter-core-1903-with-containers-smalldisk」探し、「datacenter-core-1909-with-containers-smalldisk」に変更して、「保存」ボタンをクリックします(画面6)。

画面6 画面6 「template.json」を読み込ませて、「datacenter-core-1903-with-containers-smalldisk」探し、「datacenter-core-1909-with-containers-smalldisk」に変更して保存する

 この時点ではパラメーターが空(null)の状態なので、続いて「パラメーターの編集」ボタンをクリックして開き、「ファイルの読み込み」をクリックして、準備しておいた「parameters.json」をアップロードして「保存」ボタンをクリックします。

 残りの未定義の項目(「リソースグループ」と「Admin Password」)を設定したら「購入」ボタンをクリックして、仮想マシンをデプロイします(画面7)。

画面7 画面7 「parameter.json」からパラメーターを読み込ませ、残りの未定義の項目を満たし、「購入」ボタンをクリックしてデプロイを開始する

最新状態に更新し、Dockerルートディレクトリを別ディスク上のパスに変更する

 筆者は2019年12月のイメージを使用してデプロイしましたが、Windows Server, version 1909のビルド番号はその時点で最新の「18363.535」、Docker EnterpriseのDocker Engineのバージョンも最新の「19.03.5」でした。

 Windows Serverを最新状態にするには、「Sconfig」コマンドを実行し、Windows Updateを実行して、利用可能な更新プログラムをインストールします。Docker Enterpriseの更新バージョンがリリースされた場合は、Windows PowerShell(コマンドプロンプトで「start powershell」と入力して開始)で以下のコマンドラインを実行します。

Update-Module DockerMsftProvider
Find-Package -Name Docker -ProviderName DockerMsftProvider
Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force
Start-Service Docker

 最初に指摘したようにWindows Serverの[smalldisk]イメージは、OSディスクが30GBと小さく、Dockerルートディレクトリの既定のパスはOSと同じC:ドライブ上の「C:\ProgramData\docker」であるため、Dockerを使い始めるとすぐにディスク領域が不足状態になってしまいます。

 そこで、今回は仮想マシンのデプロイ時にデータディスクを追加しておきました(前出の画面3)。データディスクは未フォーマットの状態なので、「DISKPART」コマンドを使用してパーティションを作成し、NTFSでフォーマットして、ドライブ文字を割り当てます。

DISKPART
DISKPART> list disk
DISKPART> select disk <データディスクの番号>
DISPPART> create partition primary
DISKPART> format quick fs=ntfs label="data"
DISKPART> assign letter=<ドライブ文字>
DISKPART> exit

 現在のDockerルートディレクトリは、「docker info」コマンドの出力結果の「Docker Root Dir」で確認できます。既定のパス「C:\ProgramData\docker」を、データディスク上のパスに変更するには、「メモ帳」(notepad.exe)を使用して「C:\ProgramData\docker\config\daemon.json」を新規作成し(存在する場合は開き)、次のように記述して保存します(設定が存在する場合は追加します)。パスに含まれる区切り文字「\」は、「\\」のようにエスケープする必要があることに注意してください。

{
	"graph": "F:\\dockerdata"
}

 Dockerサービスを再起動すると、「config」やTLS証明書用の「certs.d」など、設定を含むサブディレクトリを除き、新しいDockerルートディレクトリが準備されます(画面8)。既定のパスに既に存在するイメージやコンテナのデータは移動されないことに注意してください。

画面8 画面8 Dockerルートディレクトリを既定の「C:\ProgramData\docker」から「F:\dockerdata」に変更

最新情報(2020年1月23日追記)

 Azure Marketplaceにて、「[smalldisk]Windows Server, version 1909 with Containers」が利用可能になりました。


筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2019-2020)SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。