🖥️

【1-6】【Proxmox VE 実践編】LXCコンテナ作成入門:VMとの違いをリソース比較で徹底解説!

に公開

【Proxmox VE 実践編】LXCコンテナ作成入門:VMとの違いをリソース比較で徹底解説!

前回の記事では、Proxmox VEでVM(仮想マシン)を作成する手順を詳しく解説しました。
https://zenn.dev/koikoi_infra/articles/e182727d8e81dc
https://zenn.dev/koikoi_infra/articles/13b32292c8b7b1
https://zenn.dev/koikoi_infra/articles/53ca89fa354c58
今回は、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つの意味で使われます。

  1. 物理サーバー(ハードウェア): データセンターなどに設置されている物理的なサーバー機器そのものです。
  2. サーバー(ソフトウェア): 特定の機能を提供するプログラムのことです。(例: Webサーバー、メールサーバー)

今回の「SSHサーバーをインストールする」というのは、後者のソフトウェアとしてのサーバーを指しています。

  1. 作成したLXC 201 (alpine-lxc-01) を選択し、「> コンソール」を開いてrootでログインします。
  2. 以下のコマンドを実行して、SSHサーバーをインストールし、自動起動を設定します。
    # OpenSSHサーバーをインストール
    apk add openssh
    # SSHサービスを今すぐ起動
    rc-service sshd start
    # コンテナ起動時にSSHサービスが自動で起動するように設定
    rc-update add sshd
    
  3. このままだとrootでSSHログインできないため、Ubuntuの時と同様に一般ユーザーを作成して管理者権限を与えます。(推奨
    理由: rootはシステムの全権限を持つ最高管理者であり、不正アクセスされた場合のリスクが非常に高いため、多くのLinuxディストリビューションではセキュリティ対策として、初期状態でrootのパスワードによる直接のSSHログインを禁止しています。
    # sudoをインストール
    apk add sudo
    # ユーザー(例: labsuser)を作成
    adduser labsuser
    # 管理者グループ(wheel)に追加
    addgroup labsuser wheel
    # wheelグループがsudoを使えるように設定ファイルを編集
    visudo 
    
    visudoコマンドを実行後、# %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