前回の連載に続き、Windowsコンテナのホスティング環境をオンプレミスに導入する手順について説明します。また、Windows Admin Centerを使用したGUIによるDockerコンテナの管理についても触れます。
Windows Server向けのコンテナランタイム
前回説明したように、Windows ServerおよびAzure Stack HCI上にWindowsコンテナをデプロイして実行する環境としては、以下のコンテナランタイムのいずれかを利用できます。
●Mirantis Container Runtime(MCR) ・・・ かつてDocker Enterpriseと呼ばれていたエンタープライズ向けDockerランタイム
●containerd ・・・ kubernetes(k8s) v1.23以降で採用されている業界標準のコンテナランタイム。Hyper-V分離コンテナについては、ContainerD v1.7以降で限定的にサポート
●Docker Community Edition(Docker CE) ・・・ Mobyプロジェクトで管理されているDockerランタイム
Azure Stack HCI評価ガイドPart1~3
MCRは有償サブスクリプション製品であり、運用環境に導入するには、Mirantis社から有償サブスクリプションを購入する必要があります。また、その導入手順についてはMirantis社のドキュメント(Install MCR on Windows Servers)に従ってください。
ここでは、それ以外のコンテナランタイムとして、containerdを利用するAzure Kubernetes Service(AKS)ハイブリッドと、Docker CE/Mobyの導入について簡単に触れます。
AKSハイブリッドの導入(中・大規模運用環境向け)
AKSハイブリッドは、Microsoft Azureがクラウドで提供しているAKSと同等の機能(AzureポータルまたはPowerShellによるKubenetesクラスターの作成、kubectlによるデプロイなど)を、オンプレミスのAzure Stack HCIクラスターまたは、Windows Serverフェールオーバークラスター上に実装したものです。これはAzureの有料サービスであり、仮想コアまたは仮想CPUに対して課金されます(最初の60日は無料の評価期間)。
Kubernetesクラスターは、Linuxベースの管理クラスターと、LinuxベースのコントロールプレーンとLinuxまたはWindowsベースのワーカーノードからなるワークロードクラスターで構成されます。ワーカーノードとしてWindows Server 2019または2022を使用することで、Windowsコンテナをプロセス分離モードで実行することができます。現状、Hyper-V分離モードには対応していません。
ゼロからKubenetesクラスターを構築するのは大変な作業ですが、AKSハイブリッドはHyper-V仮想マシンのイメージとしてダウンロード提供されるため、Azure Stack HCIまたはWindows Server上にサービスをすばやく導入して、LinuxコンテナやWindowsコンテナに対応したワークロードクラスターの作成とアプリのデプロイを開始することができます。AKSハイブリッドはAzure Arcに接続され、クラウドとオンプレミスのKubenetesクラスターをAzureから一元的に管理することができます。
AKSハイブリッドは、Windows Server用のWebベースの管理ツールであるWindows Admin Center」(無料)を使用して、ウィザードベースで比較的簡単にセットアップすることができます。
詳細な手順については、マイクロソフトが日本独自に作成したAzure Stack HCI評価ガイドPart 1~3を提供しているので、そちらを参考にしてください。
評価ガイドのPart 1と2ではAzure Stack HCIのセットアップと管理について、Part 3ではAKSハイブリッドについて説明されています。なお、2023年11月からAzure Stack HCIバージョン23H2のプレビューが開始されていますが、バージョン23H2のAzure Stack HCIクラスターの導入手順はバージョン22H2から大きく変更される予定です。
バージョン22H2からのアップグレードはできないようなので、新たに導入を検討している場合は、バージョン23H2の導入を想定しておくべきでしょう。
Docker CEのスタンドアロンサーバーへの導入(小規模環境/テスト環境向け)
Docker CEおよびcontanerdのスタンドアロンサーバーへの導入については、その手順が公式ドキュメント作業の開始:コンテナ用の Windows を準備するで説明されていますが、マイクロソフトが提供するPowerShellスクリプトを実行するだけで簡単に完了します。
コンテナランタイムが依存するサーバーの機能や役割(Container、Hyper-V)を事前に有効化する必要はありません。依存する機能は、スクリプトが必要に応じて有効化します。
Docker CEの場合は、Windows PowerShell 5.1(powershell.exe)またはオープンソースのPowerShell(psh.exe)を管理者として開き、次のコマンドラインを実行します。
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
.\install-docker-ce.ps1 -HyperV
なお、既にHyper-Vの役割がインストール済みの場合、Hyper-V分離モードを使用しない場合、2行目の-HyperVパラメーターは不要です。スクリプトの実行によってHyper-Vがインストールされた場合は、Windows Serverの再起動が必要です。
インストール用スクリプトにはランタイムを最新バージョンにアップデートする機能はありません。Docker CEのリリース情報はhttps://download.docker.com/win/static/stable/x86_64/で確認できるので、新バージョンがリリースされた場合は、以下のコマンドラインをPowerShellで実行して、Dockerデーモンの登録解除とDocker CEの再インストールを行います。再インストールにより、取得済みのイメージや作成したコンテナが削除されることはありません。
Stop-Service Docker
dockerd --unregister-service
.\install-docker-ce.ps1
Windows Admin CenterによるDockerコンテナの管理
Windows Admin Centerは、コンテナランタイムとしてDockerデーモン(dockerdサービス)たはKubenetesプロセス(kubelet.exe)を検出した場合、Containers拡張機能のGUI「コンテナ」ツールを使用して、コンテナやイメージ、ネットワーク、ボリューム、Kubenetesサービスを管理することができます。
Azure Container Instances(ACI)へのデプロイやAzure Container Registry(ACR)へのイメージのプッシュにも対応しています。
なお、Windows Admin CenterのContainers拡張機能を使用する際には1つ注意点があります。管理対象のサーバーでコンテナランタイムが見つからない場合、「コンテナ」ツールに「インストール」ボタンが表示され、ワンクリックでインストールを開始できるようになっているのですが、この方法によるインストールは行わないでください。
この方法は、Mirantis社へのサポートの移管に伴い、既にメンテナンスされなくなったDockerMsftProviderモジュールを使用して、MCRをインストールしようとます(少なくともindows Admin Center 2306ではそうです)。しかし、モジュールが使用する接続先のダウンロード元URLが既に無効になっているためエラーで失敗します。
今回は前回に引き続き、Windowsコンテナのホスティング環境をオンプレミスに導入する手順について説明しました。次回は○○について解説します。