仮想化・ホストサーバー

Proxmox VE の LXC コンテナ入門:テンプレートの取得、コンテナ作成、IP 割り当て、リソース制限

7 ステップ 10 分で読めます 26 回閲覧 0
目次

すべてのワークロードに完全な仮想マシンが必要なわけではありません。Proxmox VE の LXC コンテナはホストのカーネルを共有し、1~2 秒で起動し、KVM 仮想マシンよりはるかに少ないメモリとディスクで動作します。そのため、専用サーバーやホストノード上で Web サイト、データベース、監視、プロキシ、社内ツールを動かすのに最適です。この記事では、コンテナテンプレートのダウンロード、Web インターフェースと pct によるコンテナの作成、グローバル IP またはプライベート IP の割り当て、CPU・メモリ・ディスク・帯域の制限、コンテナ内での Docker の実行、バックアップについて解説します。

LXC コンテナで動かせるのは Linux だけで、ホストのカーネルを共有します。コンテナ内から独自のカーネルモジュールを読み込んだり、ほとんどのカーネル設定を変更したりすることはできません。Windows、カスタムカーネル、または信頼できない顧客に販売する環境には KVM 仮想マシンを使ってください。

LXC コンテナと KVM 仮想マシン、どちらを使うべきか

LXC コンテナKVM 仮想マシン
対応 OSLinux のみLinux、Windows、BSD
オーバーヘッド非常に小さく、数秒で起動大きめ、OS 全体を起動
分離カーネルを共有完全に分離
カーネルのチューニングとモジュール制限あり完全に制御可能
主な用途自社のサービス、多数の小規模サイト顧客向け VPS、Windows、Docker ホスト

ステップ1:コンテナテンプレートをダウンロード

テンプレートは、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

ステップ2:コンテナを作成

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

ステップ3:ネットワーク設定(グローバル IP またはプライベート NAT)

グローバル 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

ステップ4:CPU、メモリ、ディスク、帯域を制限

制限はすべてコンテナの稼働中に変更でき、ほとんどは即座に反映されます。

# 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

ステップ5:コンテナ内で Docker を実行

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 仮想マシンのほうが挙動を予測しやすい選択肢です。

ステップ6:バックアップ、スナップショット、クローン

# 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 に変換できますか?

直接変換することはできません。VM を作成し、rsync などでデータやアプリケーションを移行してください(サーバー移行ガイドを参照)。

1 台のサーバーでいくつのコンテナを動かせますか?

Proxmox ではなく、ワークロード次第です。コンテナはオーバーヘッドが小さいため、64 GB メモリのサーバーなら数十の小規模な Web サイトやサービスを余裕を持って収容できます。ホストのメモリ、ディスク I/O、CPU steal を監視し、ピーク時に備えて余裕を残しておいてください。

上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日対応テクニカルサポートへご連絡ください。サーバー IP、Proxmox VE のバージョン、コンテナ ID と設定(pct config ID)、エラー全文を添えていただくと、より迅速に調査できます。

この回答はお役に立ちましたか?

関連チュートリアル