仮想マシン・コンテナの概念と利用|違いと使い方を徹底解説

Linuxを扱う上で避けて通れないのが「仮想マシン」と「コンテナ」の理解です。この記事では、それぞれの基本技術、特徴、操作方法までを分かりやすく解説します。


目次

✅ 1. 仮想マシン(Virtual Machine)とは?

仮想マシンとは、物理的なコンピューター(ホスト)上にソフトウェアで「仮想的なコンピューター(ゲスト)」を作り出す技術です。

特徴

  • 完全なOSを動かせる(WindowsやLinuxなど)
  • ホストOSとは独立して動作
  • 各仮想マシンに個別のカーネルが存在する

🧠 2. ハイパーバイザーとは?

仮想マシンを実現するための基盤が「ハイパーバイザー」です。

ハイパーバイザーの種類

  • Type 1(ネイティブ): 直接ハードウェア上で動作(例: VMware ESXi)
  • Type 2(ホスト型): ホストOS上で動作(例: VirtualBox)

🔧 3. カーネルと仮想マシンの関係

仮想マシンは独自のカーネルを持つため、ホストOSと完全に分離されています。そのため、OSごとに異なるカーネルやライブラリの構成が可能です。


📦 4. コンテナとは?

コンテナとは、ホストOSのカーネルを共有しながらアプリケーションを軽量に動作させる仮想化技術です。

特徴

  • 高速起動(数秒以内)
  • リソース消費が少ない
  • ホストOSのカーネルを共有する
  • 主にアプリケーション単位で仮想化

🆚 5. 仮想マシンとコンテナの違い

項目仮想マシン(VM)コンテナ
カーネル各VMが独立したカーネルホストOSのカーネルを共有
起動時間数十秒〜数分数秒
リソース消費高い少ない
利用目的OS全体を仮想化アプリ単位の実行環境の提供

🚀 6. 基本操作コマンド

仮想マシンの操作(virsh)

virsh start vm-name   # 仮想マシンの起動
virsh shutdown vm-name # 仮想マシンの停止
virsh list --all # 仮想マシンの一覧表示

コンテナの操作(Docker)

docker run -it ubuntu /bin/bash  # 新しいコンテナ起動
docker start コンテナID # 既存のコンテナを起動
docker stop コンテナID # コンテナを停止
docker ps -a # 全コンテナの表示

🔐 7. ホストOSとの関係(コンテナの場合)

コンテナはホストOSのユーザー空間(User Space)で動作します。カーネルの機能(名前空間、cgroupsなど)を使って隔離されており、セキュアかつ効率的に動作します。


✏️ まとめ

仮想マシンとコンテナは、どちらも仮想化技術ですが用途や特徴が大きく異なります。以下のように使い分けましょう。

  • 仮想マシン:異なるOSの検証・複数のOSを使い分ける場合
  • コンテナ:高速・軽量なアプリ実行環境を作る場合

🎁 おまけ:練習環境を作るなら?

  • 仮想マシン:VirtualBox + Ubuntu

これで簡単に試せます!

PCをお持ちの方は無料で簡単にできますので、実際にやってみることでとても理解しやすくなります!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次