Featured image of post Proxmox LXCコンテナ:完全管理ガイド Featured image of post Proxmox LXCコンテナ:完全管理ガイド

Proxmox LXCコンテナ:完全管理ガイド

Proxmox VEでのLXCコンテナ管理を完全解説。テンプレート管理、非特権/特権コンテナの選択、リソース制限、バインドマウント、バックアップ、ネットワークまで。

LXCとは

LXC(Linux Containers)は、ホストカーネルを共有しながら独立したファイルシステム・プロセス・ネットワークスタックを持つ、OSレベルの仮想化技術です。完全仮想マシンと異なり、カーネルを共用するため起動がミリ秒単位と極めて高速で、メモリオーバーヘッドも最小限です。

LXCとVMの比較

項目LXCコンテナVM(KVM/QEMU)
起動時間ミリ秒〜数秒数秒〜数分
メモリ負荷アプリメモリのみゲストOS全体
ディスク使用量100 MB〜1 GB2〜10 GB以上
カーネルホストと共有独立カーネル
分離レベルプロセスレベルハードウェアレベル
主な用途Webサーバ、マイクロサービス、開発環境マルチテナント、異種OSカーネル

テンプレートの管理

pveam コマンドでTurnKey Linuxなどのテンプレートを管理します:

pveam update
pveam available --section turnkeylinux
pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst

コンテナの作成

pct コマンドでコンテナを作成・起動します:

pct create 100 local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --hostname web01 --password securePass123 \
  --storage local-lvm --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --unprivileged 1
pct start 100

ホスト名、rootパスワード、ストレージ、ネットワーク設定を指定します。作成後にCPUやメモリも調整可能です。

非特権コンテナと特権コンテナ

非特権コンテナはUID/GIDマッピング(subuid/subgid)を使い、コンテナ内のroot(UID 0)をホスト上の非特権UIDに変換します。これにより、コンテナがホストのroot権限を取得するのを防ぎます:

Container UID 0 → Host UID 100000
Container UID 1 → Host UID 100001

特権コンテナはホストのrootとして動作するため、ファイルシステムマウントなどが容易ですが、セキュリティリスクが高まります。

重要なトレードオフ: 非特権コンテナではNFSやFUSEのマウント、ホストディレクトリのバインドマウントができません。これらが必要な場合は特権コンテナを選択し、AppArmorで保護します。

リソース制限

cgroupsによるリソース制限を pct set で設定します:

pct set 100 --memory 2048 --swap 512 --cpulimit 50 --cores 2
リソースパラメータ
CPU制限cpulimit50(1コアの50%)
CPUコア数cores4
メモリmemory2048(MB)
スワップswap512(MB)
ディスクIObwlimit100(MB/s)

バインドマウント

ホストのディレクトリをコンテナに共有するには mpX エントリを使います。非特権コンテナではUID/GIDのマッピングに注意が必要です:

mp0: /mnt/storage/data,mp=/srv/data,rootuid=1000,rootgid=1000

スナップショットとクローン

スナップショットで更新前の状態を保存し、ロールバック可能です:

pct snapshot 100 pre-upgrade --description "アップグレード前"
pct listsnapshot 100
pct rollback 100 pre-upgrade
pct clone 100 101 --hostname staging-web

ネットワーク

  • ブリッジ(vmbr) — コンテナが物理ネットワークに直接接続。DHCPでIP取得。
  • ルーテッド — ホスト経由でルーティング。
  • NAT — プライベートIP + マスカレード。外向け通信のみ。

バックアップとリストア

vzdump 100 --mode suspend --compress zstd --storage backup-store
pct restore 200 /var/lib/vz/dump/vzdump-lxc-100-2024_05_22-00_00_00.tar.zst

ユースケース

  • Webサーバの分離、データベースの軽量ホスティング、開発環境のスナップショット管理に最適です。Docker-in-LXCは特権コンテナで nesting=1 を設定すれば動作しますが、本番環境では推奨しません。