仮想化とは、1台のコンピュータを複数台のコンピュータのように見せかけたり、複数台のコンピュータを1台のコンピュータのように見せかける技術です。
この記事では、前者の「1台の物理マシンを複数に見せる仮想化」を行う3種類の方式について、学んだことをメモします。
1. ハイパーバイザー型(レンタルサーバーの仕組み)
物理マシンの土台に仮想化の専用ソフトを直接置き、その上に複数のOSを載せる方式です。
- 特徴: 無駄なOSを挟まないため、非常に高速に動作します。
- 身近な応用例(WSL2): Windowsの機能をオンにすると、物理PCの土台に「Hyper-V」という専用ソフトが滑り込み、その上にWindowsとLinuxが並列で載る構造に切り替わります。
- 実際の操作感: 一見するとWindows上でLinuxが動いているように見えますが、実は別々に起動しています。これはSSH接続と非常によく似ており、WindowsのPowerShellやVSCodeのターミナルが「WSLのビューワー」として機能している状態です。
2. ホスト型(別のOSを試したい時向け)
自分のOS(Windows等)の上で仮想化アプリを起動し、その中で別のOS(Linux等)を丸ごと起動する方式です。
- 主な目的: 開発者が自分のPCの環境を汚したくないとき、かつ「今のPCとは異なるOS」を丸ごと動かしたいときに使います。
- デメリット: OSの上でもう一個OSを動かす(2重になる)構造のため、動作が重くなります。
3. コンテナ型(同じOSのままパターンを試したい時向け)
OS自体は新しく起動せず、いま動いているOSの仕組みを全員で共有し、上乗せするツールやアプリの環境だけを個別の「箱(コンテナ)」として切り離して起動する方式です。
- 主な目的: 自分のOS上でコンテナアプリ(Dockerなど)を起動し、ツールのバージョン違い(例: Node.jsのバージョン違い)や、様々な組み合わせの環境を手軽に構築するために使います。
- ホスト型との決定的な違い:
- ホスト型: 「OS自体」を新たに起動する(重い)
- コンテナ型: OSは1つのままで、「ツールの環境」だけを新しく起動する(軽い)
💡 まとめ
異なるOSを動かす必要がないのであれば、ホスト型よりも圧倒的に動作が軽量な「コンテナ型」を選択するのが現在の開発・テスト現場の主流です。