仮想マシン(VM)とコンテナの違いは?図解でやさしく比較


VMとコンテナのアーキテクチャ比較 仮想マシン(VM) App A Guest OS App B Guest OS App C Guest OS ハイパーバイザー ハードウェア 各VMにOS丸ごと含む 起動: 数分 / サイズ: GB単位 高いセキュリティ分離 コンテナ App A + libs App B + libs App C + libs コンテナエンジン(Docker等) ホストOS(カーネル共有) ハードウェア OSカーネルを共有して軽量化 起動: 数秒 / サイズ: MB単位 高速スケーリング向き 実際のクラウド環境ではVMの上にコンテナを動かす構成が一般的
仮想マシンとコンテナのアーキテクチャ比較
ひよこ ひよこ
VMコンテナって両方とも「仮想化」なんでしょ?何が違うの?
ペンギン先生 ペンギン先生
仮想化のレベルが違うんだ。VMは「コンピューター丸ごと」を仮想化するけど、コンテナは「アプリの実行環境だけ」を仮想化するよ。
ひよこ ひよこ
もうちょっとわかりやすく…!
ペンギン先生 ペンギン先生
VMをマンションの一室に例えると、各部屋にキッチン・バス・トイレが全部ある感じ。コンテナはシェアハウスで、キッチンやバスは共有だけど、自分の部屋は独立しているイメージだよ。
ひよこ ひよこ
あー!だからコンテナのほうが軽いんだ。
ペンギン先生 ペンギン先生
そのとおり。VMは各マシンにOS丸ごと入るから起動に数分かかるけど、コンテナはホストOSのカーネルを共有するから数秒で起動できるんだ。
ひよこ ひよこ
じゃあコンテナのほうが優れてるの?
ペンギン先生 ペンギン先生
一概には言えないよ。VMはOS丸ごと分離されているから、セキュリティの隔離性が高い。銀行システムや機密性の高い環境ではVMが選ばれることも多いんだ。
ひよこ ひよこ
使い分けがあるんだね。どういう基準で選ぶの?
ペンギン先生 ペンギン先生
ざっくり言うと、マイクロサービスや頻繁にスケールする用途にはコンテナ、異なるOSが必要だったりセキュリティ分離が重要なケースにはVMが向いているよ。
ひよこ ひよこ
両方同時に使うこともあるの?
ペンギン先生 ペンギン先生
あるよ!クラウド環境ではVM上にコンテナを動かすのが一般的なんだ。AWSのEC2(VM)の上でEKS(Kubernetes)を動かすようなイメージだね。
ひよこ ひよこ
入れ子になってるんだ!面白い。
ペンギン先生 ペンギン先生
最近はFirecrackerのようにVMの安全性とコンテナの軽さを両立する「マイクロVM」技術も出てきている。AWS Lambdaの裏側で使われていて、業界のトレンドになっているよ。