コンテナーと仮想マシン
適用対象: Windows Server 2025、Windows Server 2022、Windows Server 2019、Windows Server 2016
このトピックでは、コンテナーと仮想マシン (VM) の主な類似点と相違点と、それぞれを使用する場合について説明します。 コンテナーと VM にはそれぞれ用途があります。実際、コンテナーの多くのデプロイでは、特にクラウドでコンテナーを実行する場合に、ハードウェア上で直接実行するのではなく、ホスト オペレーティング システムとして VM を使用します。
コンテナーの概要については、「Windows とコンテナー」に関する を参照してください。
コンテナー アーキテクチャ
コンテナーは、ホスト オペレーティング システムでアプリケーションを実行するための分離された軽量サイロです。 コンテナーは、ホスト オペレーティング システムのカーネル (オペレーティング システムの埋もれた配管と考えることができます) の上に構築され、この図に示すように、アプリと、ユーザー モードで実行されるいくつかの軽量オペレーティング システム API とサービスのみが含まれます。
の上でコンテナーがどのように実行されるかを示すアーキテクチャ図
仮想マシンのアーキテクチャ
コンテナーとは対照的に、VM は、次の図に示すように、独自のカーネルを含む完全なオペレーティング システムを実行します。
の横にある完全なオペレーティング システムを VM で実行する方法を示すアーキテクチャ図
コンテナーと仮想マシン
次の表に、これらの補完技術の類似点と相違点をいくつか示します。
特徴 | 仮想マシン | コンテナ |
---|---|---|
隔離 | ホスト オペレーティング システムやその他の VM から完全に分離します。 これは、同じサーバーまたはクラスター上の競合企業からのアプリをホストするなど、強力なセキュリティ境界が重要な場合に便利です。 | 通常、ホストやその他のコンテナーから軽量の分離が提供されますが、VM ほど強力なセキュリティ境界は提供されません。 (Hyper-V 分離モード を使用して、軽量 VM 内の各コンテナーを分離することで、セキュリティを強化できます)。 |
オペレーティング システム | カーネルを含む完全なオペレーティング システムを実行するため、より多くのシステム リソース (CPU、メモリ、ストレージ) が必要になります。 | オペレーティング システムのユーザー モード部分を実行し、システム リソースの数を減らして、アプリに必要なサービスのみを含むよう調整できます。 |
ゲストの互換性 | 仮想マシン内のほぼすべてのオペレーティング システムを実行します。 | ホスト と同じオペレーティング システム バージョン 実行されます (Hyper-V 分離により、軽量 VM 環境で同じ OS の以前のバージョンを実行できます)。 |
デプロイ | Windows Admin Center または Hyper-V Manager を使用して個々の VM をデプロイする。PowerShell または System Center Virtual Machine Manager を使用して複数の VM をデプロイします。 | コマンド ラインを使用して Docker を使用して個々のコンテナーをデプロイする。Azure Kubernetes Service などのオーケストレーターを使用して複数のコンテナーをデプロイします。 |
オペレーティング システムの更新とアップグレード | 各 VM にオペレーティング システムの更新プログラムをダウンロードしてインストールします。 新しいオペレーティング システムのバージョンをインストールするには、アップグレードが必要です。多くの場合、まったく新しい VM を作成するだけです。 これは、特に多くの VM がある場合に、時間がかかる場合があります。 | コンテナー内のオペレーティング システム ファイルの更新またはアップグレードは同じです。
|
永続的ストレージ | 1 つの VM のローカル ストレージには仮想ハード ディスク (VHD) を使用し、複数のサーバーで共有されるストレージには SMB ファイル共有を使用します。 | 1 つのノードのローカル ストレージには Azure Disks を使用し、複数のノードまたはサーバーで共有されるストレージには Azure Files (SMB 共有) を使用します。 |
負荷分散 | 仮想マシンの負荷分散により、実行中の VM がフェールオーバー クラスター内の他のサーバーに移動されます。 | コンテナー自体は移動しません。代わりに、オーケストレーターはクラスター ノード上のコンテナーを自動的に開始または停止して、負荷と可用性の変更を管理できます。 |
障害耐性 | VM はクラスター内の別のサーバーにフェールオーバーでき、新しいサーバーで VM のオペレーティング システムが再起動します。 | クラスター ノードで障害が発生した場合、そのノードで実行されているコンテナーは、オーケストレーターによって別のクラスター ノードで迅速に再作成されます。 |
ネットワーキング | 仮想ネットワーク アダプターを使用します。 | 仮想ネットワーク アダプターの分離ビューを使用し、少し少ない仮想化を提供します。ホストのファイアウォールはコンテナーと共有されますが、使用するリソースは少なくなります。 詳細については、Windows コンテナー ネットワーク を参照してください。 |