【Linux】仮想マシンとコンテナの違い

Linuxにおける仮想マシンとコンテナの違いについてまとめました。

仮想マシン

  • サーバ仮想化によって作成された仮想のサーバー。
  • サーバ仮想化とは、物理リソース(CPU、メモリ、SSDなど)の使用時間を細かく分割し、それぞれをひとまとめにして複数の個別独立したサーバーのように機能させること。
  • 仮想マシンごとにOSを用意できるため、アプリケーションに合わせてOSを選択して稼働できる(*ホストOSと異なる種類のゲストOSを使用できる**)。
  • 物理環境で実装可能な機能はほぼすべて実現できるため、IP管理も可能。
  • 仮想的なハードウェアレベルで仮想マシンが隔離されるた。そのため。仮想マシンで実行されるアプリケーションはホストOSや他の仮想マシンから確認できず、仮想マシンからホストOSや他の仮想マシンへのアクセス方法も限定的であるため、仮想サーバーにセキュリティの問題が生じた場合、他の仮想マシンやホストOSが受けるセキュリティリスクの影響が小さい。
  • ハードウェア集約による運用コスト削減、拡張性の高さ、バックアップの取りやすいなどの利点があるが、物理リソースを分割しているため物理環境よりも性能が劣りやすく運用管理が複雑になるなどの欠点があります。

コンテナ

  • ハードウェア上に存在するOSが1つのみであり、その上で複数のコンテナが稼働している。
  • ホストOSのリソースを隔離して「コンテナ」という仮想環境を作成する。そのため、OSに起因するオーバーヘッドがかからずにリソースを有効活用できる。
  • コンテナはホストOSのプロセスとして動作する。
  • 仮想マシンに比べてリソース消費が少なく軽量で起動が速い
  • IPアドレスは自動設定で、外部とはNAT(Network Address Translation)で接続する。
  • 高速起動、軽量なリソース、可搬性に優れている一方、カーネル共有によるセキュリティリスクがあります。
  • コンテナはホストOSのプロセスの1つとして動作するため、ホストOSのプロセスリストからコンテナプロセスを確認できる。
  • コンテナはホストOSのリソースを共有するため、仮想サーバーにセキュリティの問題が生じた場合、ホストOSや他のコンテナへの影響が大きいため、リソース共有の制限設定を適切に行うなど、運用には注意となる。
  • コンテナはホストOSのカーネルを共有し、仮想マシンやゲストOSを起動せずにアプリケーションの実行環境を構築できる(※ホストOSと異なるOSをコンテナで使用できない

関連ページ

【LinuC】試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
LPICの試験対策と例題まとめ
LPICの試験対策と例題(学習サイト)についてまとめました。
【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。

コメント