「仮想マシン」と「コンテナ」の強みが分かる“根本的な違い”いつもコンテナが最適とは限らない【後編】

仮想化技術として、企業におけるシステムの構築や運用に使われている「仮想マシン」と「コンテナ」には、どのような違いがあるのか。それぞれの仕組みの違いを踏まえて、得意なことと不得意なことを明らかにする。

2023年11月21日 05時00分 公開
[Matthew GrasbergerTechTarget]

関連キーワード

仮想マシン(VM) | 仮想化


 アプリケーションの実行環境を用意するための仮想化技術に、「仮想マシン」(VM)と「コンテナ」がある。これらは類似する技術として考えられる傾向にあるが、その仕組みには明確な違いがあるため、リソースの使用といった基本的な違いを理解して使うことが欠かせない。本稿はVMの短所を踏まえて、VMとコンテナの違いを明らかにする。

仮想マシン(VM)の短所

 CPUやメモリなどのリソースに関して、VMは独立したリソースを必要とする。一方コンテナは、ホストシステムのリソースを共有する。VMのイメージファイルはOSを含むため大きくなりがちであるのに対し、コンテナはコンテナ自身やその中のアプリケーションを動かすためのソフトウェアであるランタイムやライブラリ(プログラム部品群)を含む。こうしたファイルから成るコンテナのサイズは、概してVMよりも小さくなりやすい。そのためコンテナは、実行に必要なリソースがVMよりも少なくて済む傾向にある。

 特にクラウドサービスにおいて、これは大きな違いをもたらす。クラウドサービスでVMを使用すると、各VMがそれぞれ必要なリソースを専有するため、同時に実行できるVMの数には限度がある。一方で同じホストシステムにあるコンテナは、ホストシステムのOSをコンテナ間で共有するため、1つのホストシステムでコンテナを効率的に同時実行できる。この効率性は、コンテナ数を増減させる「水平スケーリング」が頻繁に必要となるモダンなアプリケーションにおいて有用だ。一般的には、1台のホストシステムで同時実行できるVM数よりも、同時実行できるコンテナ数の方が多くなる。

 つまりコンテナは、アプリケーションのデプロイ(配備)を簡素化する際に役立つ。アプリケーションはコンテナ内で完結するため、アプリケーションに必要な特定のOSやライブラリをホストシステムにインストールする作業は不要だ。「Kubernetes」などのコンテナオーケストレーションツールを用いてデプロイやスケーリングを実行できる。追加のコンテナを実行するためのリソースは、実行中のコンテナが使っているリソース以外にはほとんどない。

TechTarget発 世界のインサイト&ベストプラクティス

米国TechTargetの豊富な記事の中から、さまざまな業種や職種に関する動向やビジネスノウハウなどを厳選してお届けします。

ITmedia マーケティング新着記事

news061.png

高齢男性はレジ待ちが苦手、女性は待たないためにアプリを活用――アイリッジ調査
実店舗を持つ企業が「アプリでどのようなユーザー体験を提供すべきか」を考えるヒントが...

news193.jpg

IASがブランドセーフティーの計測を拡張 誤報に関するレポートを追加
IASは、ブランドセーフティーと適合性の計測ソリューションを拡張し、誤報とともに広告が...

news047.png

【Googleが公式見解を発表】中古ドメインを絶対に使ってはいけない理由とは?
Googleが中古ドメインの不正利用を禁止を公式に発表しました。その理由や今後の対応につ...