すべてのワークロードに完全な仮想マシンが必要なわけではありません。Proxmox VE の LXC コンテナはホストのカーネルを共有し、1~2 秒で起動し、KVM 仮想マシンよりはるかに少ないメモリとディスクで動作します。そのため、専用サーバーやホストノード上で Web サイト、データベース、監視、プロキシ、社内ツールを動かすのに最適です。この記事では、コンテナテンプレートのダウンロード、Web インターフェースと pct によるコンテナの作成、グローバル IP またはプライベート IP の割り当て、CPU・メモリ・ディスク・帯域の制限、コンテナ内での Docker の実行、バックアップについて解説します。
| LXC コンテナ | KVM 仮想マシン | |
|---|---|---|
| 対応 OS | Linux のみ | Linux、Windows、BSD |
| オーバーヘッド | 非常に小さく、数秒で起動 | 大きめ、OS 全体を起動 |
| 分離 | カーネルを共有 | 完全に分離 |
| カーネルのチューニングとモジュール | 制限あり | 完全に制御可能 |
| 主な用途 | 自社のサービス、多数の小規模サイト | 顧客向け VPS、Windows、Docker ホスト |
テンプレートは、Debian、Ubuntu、Rocky Linux、AlmaLinux、Alpine などの構築済みルートファイルシステムです。Web インターフェースで local → CT Templates → Templates を開くか、ホスト上でコマンドラインを使います。テンプレートのファイル名にはバージョン番号が含まれるため、一覧から正確な名前をコピーしてください。
pveam update
pveam available --section system | grep -E 'debian-12|ubuntu-24.04|rockylinux-9|alpine'
pveam download local debian-12-standard_12.7-1_amd64.tar.zst # use the exact name from the list
pveam list local
Web インターフェースで Create CT をクリックし、ウィザードに従ってホスト名と root パスワード(または SSH キー)、テンプレート、ディスクサイズ、CPU コア数、メモリ、ネットワークを設定します。Unprivileged container はチェックしたままにしてください。コンテナ内の root がホスト上の非特権ユーザーにマッピングされるため、はるかに安全です。同じコンテナをコマンドラインで作成する場合は次のとおりです。
pct create 101 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
--hostname web01 \
--unprivileged 1 \
--cores 2 --memory 2048 --swap 512 \
--rootfs local-lvm:20 \
--net0 name=eth0,bridge=vmbr0,ip=203.0.113.11/24,gw=203.0.113.1 \
--nameserver 1.1.1.1 \
--ssh-public-keys /root/.ssh/authorized_keys \
--features nesting=1 \
--onboot 1
pct start 101
pct enter 101 # open a root shell inside the container
pct list
グローバル IP:コンテナをパブリックネットワーク用のブリッジ(通常は vmbr0)に接続し、追加 IP のいずれかとそのサブネットのゲートウェイを、VM の場合とまったく同じように設定します(Proxmox の VM にグローバル IP を割り当てる方法を参照)。追加 IP が特定の MAC アドレス宛てにルーティングされている場合は、net0 のオプションで hwaddr= を指定してください。
プライベート NAT:ホストの 1 つの IP の背後で多数のコンテナを動かすには、vmbr1 などのプライベートブリッジに接続し、Proxmox VE の NAT ネットワークで説明しているように必要なポートを転送します。
pct set 102 --net0 name=eth0,bridge=vmbr1,ip=10.10.10.12/24,gw=10.10.10.1
pct reboot 102
制限はすべてコンテナの稼働中に変更でき、ほとんどは即座に反映されます。
# CPU: 2 visible cores, but at most 1.5 cores of total CPU time
pct set 101 --cores 2 --cpulimit 1.5
# Memory and swap (MB)
pct set 101 --memory 1024 --swap 256
# Grow the root disk by 10 GB (disks can grow online but not shrink)
pct resize 101 rootfs +10G
# Bandwidth: rate is in MB/s, so 12.5 is roughly 100 Mbps
pct set 101 --net0 name=eth0,bridge=vmbr0,ip=203.0.113.11/24,gw=203.0.113.1,rate=12.5
pct config 101
nesting を有効にすれば、非特権コンテナでも Docker が動作します。イメージによっては keyctl 機能も必要です。
pct set 101 --features nesting=1,keyctl=1
pct reboot 101
pct enter 101
# inside the container, install Docker as usual (see our Docker guide)
本番環境の Docker ホスト、特に多数のコンテナや特殊なストレージドライバーを使う場合は、やはり KVM 仮想マシンのほうが挙動を予測しやすい選択肢です。
# Snapshot before risky changes (requires LVM-thin, ZFS or Ceph storage)
pct snapshot 101 before-upgrade
pct rollback 101 before-upgrade
# Full backup with compression (see our Proxmox backup guide for schedules)
vzdump 101 --mode snapshot --storage local --compress zstd
# Clone a container you have prepared as a base
pct clone 101 105 --hostname web05 --full 1
定期バックアップとリストアについては、Proxmox VE のバックアップとスナップショットを参照してください。
pct config で IP、プレフィックス、ゲートウェイ、ブリッジが正しいかを確認し、コンテナ内の /etc/resolv.conf で DNS の設定を確認してください。コンテナ内から ping -c3 1.1.1.1、続いて ping -c3 google.com を実行すると、ルーティングの問題か DNS の問題かを切り分けられます。Proxmox のファイアウォールがコンテナをブロックしていないかも確認しましょう。
直接変換することはできません。VM を作成し、rsync などでデータやアプリケーションを移行してください(サーバー移行ガイドを参照)。
Proxmox ではなく、ワークロード次第です。コンテナはオーバーヘッドが小さいため、64 GB メモリのサーバーなら数十の小規模な Web サイトやサービスを余裕を持って収容できます。ホストのメモリ、ディスク I/O、CPU steal を監視し、ピーク時に備えて余裕を残しておいてください。
上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日対応テクニカルサポートへご連絡ください。サーバー IP、Proxmox VE のバージョン、コンテナ ID と設定(pct config ID)、エラー全文を添えていただくと、より迅速に調査できます。