コンテナーと仮想マシンを比較する
ハードウェアの仮想化を利用すると、オペレーティング システムの複数の分離されたインスタンスを同時に、同じ物理ハードウェア上で実行することができます。 コンテナーは、コンピューティング リソースの仮想化における次の段階を表します。
コンテナー ベースの仮想化を使用すると、オペレーティング システムを仮想化できます。 この方法を採用すると、オペレーティング システムの同じインスタンス内で複数のアプリケーションを実行しながら、アプリケーション間の分離を維持できます。 仮想マシン内のコンテナーは、物理サーバー内の仮想マシンと同様の機能を備えています。
コンテナーと仮想マシンの違いについて知っておくべきこと
コンテナーベースの仮想化について理解を深めるために、コンテナーと仮想マシンを比較してみましょう。
比較 | コンテナー | 仮想マシン |
---|---|---|
分離 | 通常、コンテナーにはホストや他のコンテナーからの簡易な分離機能がありますが、コンテナーでは仮想マシンほど強力なセキュリティ境界が設定されません。 | 仮想マシンを使用すると、ホスト オペレーティング システムや他の仮想マシンから完全に分離されます。 この分離は、同じサーバーまたはクラスター上の競合企業からのアプリのホスティングなど、強力なセキュリティ境界が重要な場合に役立ちます。 |
オペレーティング システム | コンテナーは、オペレーティング システムのユーザー モードの部分を実行します。アプリに必要なサービスのみを含むように調整することもできます。 このアプローチを採用すると、使うシステム リソースを減らすことができます。 | 仮想マシンは、カーネルを含む完全なオペレーティング システムを実行します。そのため、より多くのシステム リソース (CPU、メモリ、ストレージ) が必要です。 |
デプロイ | Docker を使い、そのコマンド ラインを介して、個々のコンテナーをデプロイできます。 Azure Kubernetes Service などのオーケストレーターを使って、複数のコンテナーをデプロイできます。 | Windows Admin Center または Hyper-V マネージャーを使用して、個々の仮想マシンをデプロイできます。 PowerShell または System Center Virtual Machine Manager を使って、複数の仮想マシンをデプロイできます。 |
永続的ストレージ | コンテナーの場合、単一のノードのローカル ストレージには Azure ディスクを、複数のノードまたはサーバーが共有するストレージには Azure Files (SMB 共有) を使います。 | 仮想マシンの場合、単一のマシンのローカル ストレージには仮想ハード ディスク (VHD) を、複数のサーバーが共有するストレージには SMB ファイル共有を使います。 |
フォールト トレランス | クラスター ノードの 1 つで障害が発生したときに、そのノード上で実行されているコンテナーがある場合は、別のクラスター ノード上のオーケストレーターによってそのコンテナーが迅速に再作成されます。 | 仮想マシンはクラスター内の別のサーバーにフェールオーバーすることができます。この場合、仮想マシンのオペレーティング システムは新しいサーバー上で再起動します。 |
コンテナーを使う場合に考慮すべきこと
コンテナーには、物理マシンと仮想マシンよりも優れている点がいくつかあります。 次の利点を確認し、どのようにすれば会社の内部アプリにコンテナーを実装できるかを検討してください。
柔軟性とスピードを検討します。 コンテナー化されたアプリケーション コードを開発するときと共有するときの柔軟性と速度が向上します。
テストを検討します。 アプリのテストを簡略化できるように、構成のコンテナーを選びます。
アプリのデプロイを検討します。 コンテナーを実装して、アプリのデプロイの効率化と高速化を実現します。
ワークロードの密度を検討します。 コンテナーを使うことで、より高いワークロードの密度をサポートし、リソースの使用率を高めます。