Dockerを使ったWindowsコンテナを動かす方法から実行まで解説!

thumb_cockerwindowscontainer_01
この記事でわかること
Windowsコンテナは、Windows Serverの仮想化の中核を成すテクノロジーです
マイクロソフトではVisual Studioでの開発やAzure利用を想定し、コンテナ環境整備を進めています
マイクロソフトはあらかじめWindowsの基本イメージを提供し、利用者の利便性を高めています

Windowsのコンテナとは?

img_dockerwindowscontainer_01

Windowsコンテナは、Windows Serverの仮想化の中核を成すテクノロジーです。Windowsでは仮想マシン(VM)とコンテナを仮想化に利用します。そのため、マイクロソフト社も公式ドキュメントサイトに各仮想化テクノロジーの詳細情報を掲載しています。

【参考】:Windows のコンテナーに関するドキュメント

マイクロソフトでは、DockerでWindowsを動かすことを想定しています。自社の強みである開発ツールを用いてコードを開発し、オンプレミスやAzureクラウドサービスでコンテナを利用するケースが想定されます。

 

Windows Serverとは?dockerとの関連性

Windows Serverとは、マイクロソフト社が開発・提供しているプラットフォームソフトウェア製品で、サーバ用途に最適化したオペレーティングシステム(OS)を指します。

Windows ServerはOSであるため、Windows Server上でDockerを含むコンテナを使用可能です

用意したPCにインストールと構築作業を行うことで、Windows環境として作業可能となります。Windows Severの詳細について、詳しく知りたい方はこちらの記事をご覧ください。

Windows Serverとは?特徴やできること・使い方を解説!
 

Windowsのコンテナ概要

コンテナは、アプリケーションをパッケージ管理するOSレベル仮想化テクノロジーで、WindowsやLinux等で利用します。アプリケーションの開発・テスト・デプロイを簡単に行い、管理も簡単な他、変化するニーズに素早く対応できるのが特長です。

マイクロソフト社はコンテナのプラットフォームに以下のソフトウェア利用を想定し、連携性を保証しています。

Docker Desktopの利用

Docker Desktop利用を想定し、Windows・LinuxのコンテナをWindows10で実行します。同様にWindows Serverで直接コンテナを実行することもできます。

Docker DesktopとVisual Studioの連携

Docker Desktopに含まれるDocker Engine・Docker Compose・Kubernetes等をVisual Studio・Visual Studio Codeを用いて、開発・テスト・デプロイします。

Azureとの連携

DockerHubとAzure Container Registryを活用し、Visual Studioを用いた開発コード・アプリを発行・共有します。Azureを用いた大規模システムにも利用可能です。

 

Windowsの仮想マシンとコンテナの違い

仮想マシンはホストOSから分離され、任意のOSを実行するアーキテクチャです。Windowsでも他のOSでも考え方には違いがありません。WindowsではWindows管理センタまたはHyper-Vマネージャを用いてデプロイを行います。

コンテナはOSレベル仮想化に違いがありません。Windowsでは他のOSとは異なり、Hyper-V分離モードが搭載されているため、追加機能としてHyper-V分離コンテナが作成できます。Dockerからも”docker run”の際に”--isolation=hyperv”を指定することで、Hyper-V分離コンテナが作成できます。これによりHyper-V分離コンテナでホストOSのWindows旧バージョン環境を設定し、アプリケーション実行することもできます。

以上のことからWindowsコンテナでできることは、他のOSより幅広い適応領域となっていると考えられます。

【参考】:Windows コンテナ―の基本事項 分離モード

 

Windowsのコンテナイメージ

マイクロソフトではコンテナ構築に際し、いくつかの基本イメージを提供しています。具体的には以下のイメージが提供されます。

・Windows  

Windows APIとサーバーロールを除くシステムサービスが提供されます。

・Windows Server  

Windows APIとサーバーロールを含むシステムサービスが提供されます。

・Windows Server Core  

Windows ServerのサブセットとなるAPIが提供されます。

・Nano Server  

.NET Core APIをベースとした最小のWindows Serverイメージとなります。

 

Windowsコンテナの動作要件

Windowsコンテナの動作OSは、Windows Server 2022・Windows Server(半期チャネル)・Windows Server 2019・Windows Server 2016、Windows 10 Professional・Enterpriseエディション(バージョン1607以降)がサポートされています。

Hyper-V分離コンテナを利用する場合は、Hyper-Vロールをインストールしておきます。Hyper-V仮想マシンからコンテナを実行する場合、メモリ容量や仮想化に対応したプロセッサ等の要件があります。詳しくは以下のリンクからご確認ください。

【参考】:Windows コンテナーの要件

Windowsでコンテナを利用するために

img_dockerwindowscontainer_02

まず最初にコンテナ利用のためのWindows OSを、Windows ServerまたはWindows Clientにセットアップします。

・Windows Server

Windows Server 2022・Windows Server(半期チャネル)・Windows Server 2019・Windows Server 2016の稼働するサーバーを準備します。

・Windows Client

バージョン1607以降のWindows 10 Professional・Enterpriseエディション・Windows11を用意します。Hyper-V機能が利用できるか確認しておきます。

 

Dockerのインストール

DockerをWindows OSに合わせてインストールします。

Windows Server

マイクロソフトではインストール作業を簡素化するために、GitHub登録のOneGetプロバイダーPowerShellモジュールの利用を推奨しています。管理者権限でPowerShellを起動し、以下のコマンドで Docker-Microsoft PackageManagement Providerをインストールします。

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

続いてDockerをインストールします。

Install-Package -Name docker -ProviderName DockerMsftProvider

インストール完了後サーバーを再起動します。

Restart-Computer -Force

Windows Client

Windowsのクライアント環境ではDocker Desktopが利用できます。Docker Desktopには、デスクトップダッシュボード・Docker Engine・Docker CLI・Docker Compose等が含まれます。Docker公式ダウンロードからモジュールをダウンロードし、インストールします。個人ユーザや小規模事業者は無償ライセンスプランが選択できます。具体的なリンクは以下の通りです。

【参考】:Docker Desktop for Windows

インストーラでは「Configuration」の画面で、「Enable Hyper-V Windows Features」と「 Install required Windows components for WSL 2」のオプション設定を確認します。また、インストール時にデフォルトコンテナをWindowsコンテナに変更することもできます。Dockerの「Switch to Windows containers…」メニューから変更することもできます。

詳細は以下のリンクをご確認ください。

【参考】:Windows 上の Docker エンジン

 

Windowsコンテナの作成と実行

コンテナを作成・実行するには最初にベースとなるイメージ(基本イメージ)を準備します。マイクロソフトの提供する基本イメージとなる、Windows・Windows Server・Windows Server Core・Nano Serverから選択します。Nano Serverをダウンロード・インストールする場合は以下のコマンドとなります。コマンドプロンプトから実行します。

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

この際、エラーが発生する場合はDockerデーモンが起動しているか確認してください。Dockerサービスを”Start-Service docker”等を用いた再起動が必要な場合があります。また、初期設定でLinuxコンテナが構成されている場合は、「Switch to Windows containers…」から「Windowsコンテナ」を選択します。

イメージダウンロードが完了したら、”docker images”でインストール済みイメージの一覧で確認できます。その後コンテナを実行可能です。”docker run”でイメージを指定し、実行します。

マイクロソフト製品をWindowsコンテナとともに有効活用しましょう

img_dockerwindowscontainer_03

Windowsコンテナは、Visual Studio・Visual Studio Codeを用いて開発・テスト・デプロイを行うのが効果的です。Dockerを使いながらAzureへの大規模展開も可能です。.NETベースのイメージを活用する際には利用価値が高く、開発生産性の観点からも利用をおすすめします。

 

アンドエンジニアへの取材依頼、情報提供などはこちらから