【1-6】【Proxmox VE 実践編】LXCコンテナ作成入門:VMとの違いをリソース比較で徹底解説!
【Proxmox VE 実践編】LXCコンテナ作成入門:VMとの違いをリソース比較で徹底解説!
前回の記事では、Proxmox VEでVM(仮想マシン)を作成する手順を詳しく解説しました。 今回は、PVEが持つもう一つの選択肢、「LXCコンテナ」を作成し、VMと何が違うのかを徹底比較していきます。
1. そもそもVMとLXC(コンテナ)は何が違うのか?
まず、2つの技術の根本的な違いを理解しましょう。
-
🏠 VM(仮想マシン)は「家を丸ごと一軒建てる」
VMは、土地(物理ハードウェア)の上に、基礎(ハイパーバイザー)、骨組みや壁(ゲストOSのカーネル)、内装(OSのシステム)をすべてゼロから構築します。完全に独立した家なので、どんな種類(Windows/Linux)の家も建てられますが、その分、建築には時間がかかり、多くの資材(リソース)を消費します。 -
🏢 LXC(コンテナ)は「マンションの一室を借りる」
LXCは、すでにあるマンション(Proxmox VEホストOS)の頑丈な基礎や骨組み(ホストOSのカーネル)を共有します。そして、その中に自分専用の壁や内装(OSのシステム)だけを作って独立した部屋として利用します。基礎工事が不要なため、入居(作成・起動)は一瞬で、消費する資材(リソース)も最小限で済みます。ただし、マンションのルール(Linux)に従う必要があります。
2. 実践!軽量LXCコンテナ(Alpine Linux)の作成
それでは、この「マンションの一室」がいかに手軽で効率的か、実際に体験してみましょう。今回は非常に軽量なAlpine Linuxのコンテナを作成します。
Step 1: テンプレートのダウンロード
LXCはISOイメージではなく、「テンプレート」と呼ばれるOSの雛形から作成します。
Proxmox VEの local ストレージ → CTテンプレート メニューから、alpine-3.21 のテンプレートをダウンロードします。
Step 2: LXC作成ウィザード
管理画面右上の「CTを作成」からウィザードを開始します。CPUやメモリ、ネットワークなどの設定項目はVM作成時と考え方が同じなので、今回は以下の仕様で作成します。
-
CT ID:
201 -
名前:
alpine-lxc-01 - テンプレート: 先ほどダウンロードしたAlpine Linux 3.21
-
CPU:
1コア/ RAM:512MB/ HDD:8GB -
ネットワーク: IP
192.168.3.201/24
Step 3: 起動とSSH接続の準備
作成したLXCを起動し、SSHで接続したいのですが、Alpine Linuxのテンプレートは最小構成のため、まずSSHサーバーを手動でインストールする必要があります。
補足:「サーバー」という言葉の2つの意味
ここで「サーバーをインストールする?」と少し不思議に思うかもしれません。ITの世界では、「サーバー」という言葉は文脈によって2つの意味で使われます。
- 物理サーバー(ハードウェア): データセンターなどに設置されている物理的なサーバー機器そのものです。
- サーバー(ソフトウェア): 特定の機能を提供するプログラムのことです。(例: Webサーバー、メールサーバー)
今回の「SSHサーバーをインストールする」というのは、後者のソフトウェアとしてのサーバーを指しています。
- 作成したLXC
201 (alpine-lxc-01)を選択し、「> コンソール」を開いてrootでログインします。 - 以下のコマンドを実行して、SSHサーバーをインストールし、自動起動を設定します。
# OpenSSHサーバーをインストール apk add openssh # SSHサービスを今すぐ起動 rc-service sshd start # コンテナ起動時にSSHサービスが自動で起動するように設定 rc-update add sshd - このままだと
rootでSSHログインできないため、Ubuntuの時と同様に一般ユーザーを作成して管理者権限を与えます。(推奨)
理由:rootはシステムの全権限を持つ最高管理者であり、不正アクセスされた場合のリスクが非常に高いため、多くのLinuxディストリビューションではセキュリティ対策として、初期状態でrootのパスワードによる直接のSSHログインを禁止しています。# sudoをインストール apk add sudo # ユーザー(例: labsuser)を作成 adduser labsuser # 管理者グループ(wheel)に追加 addgroup labsuser wheel # wheelグループがsudoを使えるように設定ファイルを編集 visudovisudoコマンドを実行後、# %wheel ALL=(ALL) ALLという行の先頭の#を削除して保存します。
これで、作業PCのターミナルから ssh labsuser@192.168.3.201 のようにしてSSH接続できる準備が整いました。
3. VM vs LXC 直接対決!性能・リソース使用量を比較する
SSHで接続できるようになったLXCと、前回作成したVM(ubuntu-server-01)の性能を比較してみましょう。
① 起動時間:体感でわかる圧倒的な速さ
VMとLXC、それぞれの「起動」ボタンを押してみてください。OSのブートプロセスを丸ごと実行するVMに対し、LXCはほぼ一瞬で起動するはずです。
② メモリ使用量:最も分かりやすい差
Proxmox VEのサマリー画面で、それぞれのメモリ使用量を確認します。
- VM (ubuntu-server-01): アイドル時でも数百MBのメモリを消費。
- LXC (alpine-lxc-01): アイドル時のメモリ消費は数十MB程度と、桁違いに少ないことが分かります。

また、それぞれのコンソールでディスク使用量(df -h)や起動しているプロセス数(htop)を確認しても、同様にLXCの方が圧倒的に少ないことがわかります。このように、LXCはあらゆる面でVMよりも軽量です。
4. どちらをいつ使うべきか?
今回の比較から、VMとLXCには明確な得意分野があることが分かりました。
-
VMを選ぶべき時
- 完全な隔離が必要な場合
- ホストOSとは異なる種類のOS(例: Windows)や、異なるカーネルバージョンのLinuxを動かしたい場合
- 物理デバイスのパススルーなど、高度なハードウェア機能が必要な場合
-
LXCを選ぶべき時
- 速度とリソース効率を最優先したい場合
- Webサーバーやデータベースなど、単一のLinuxサービスを独立させて大量に動かしたい場合
- Dockerコンテナの実行基盤など、軽量な環境が欲しい場合
Proxmox VEの真の強みは、この「独立した一軒家(VM)」と「手軽なマンションの一室(LXC)」を、同じ管理画面から適材適所で使い分けられる点にあります。
Discussion