サーバ仮想化OSS「Proxmox VE」を使ってLXCコンテナを作成する方法サーバ仮想化OSS「Proxmox Virtual Environment」の基礎知識(3)

ハイパーバイザーの機能とコンテナ基盤の機能を併せ持つ「Proxmox Virtual Environment」で仮想マシンやコンテナを管理する方法を解説する本連載。今回は、LXCコンテナを作成したり、その中でアプリケーションコンテナを動かしたりする方法を紹介します。

» 2026年06月25日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 ハイパーバイザーの機能とコンテナ基盤の機能を併せ持つ「Proxmox Virtual Environment」で仮想マシンやコンテナを管理する方法を解説する本連載。前回はProxmox VE上に仮想マシンを作成し、サーバOSを構築する方法を解説しました。

 今回は、Proxmox VEで仮想環境を作成するもう一つの方法であるLXCコンテナを作成する方法を解説するとともに、仮想マシンとの違いを整理します。一般的に「コンテナ」と聞くと、「DockerやPodmanで使えるもの」と思い浮かべるかと思いますが、LXCコンテナと一般的な「コンテナ」にはどのような違いがあるのでしょうか。

 LXC(Linux Containers)は「システムコンテナ」とも呼ばれ、cgroupsやユーザー名前空間といったLinuxカーネルの機能を使ってOS全体を仮想化することを目的としていますが、一般的なコンテナは「アプリケーションコンテナ」とも呼ばれ、LXCの技術を応用して特定のアプリケーションと依存ライブラリをパッケージ化し、アプリケーションの配布と実行を簡単に実現することを目的としています。

 そのため、LXCコンテナを使った仮想化では、通常のLinuxサーバと同じようにSSH(Secure Shell)などでログインして、複数のアプリケーションをインストールして運用することになります。

Proxmox VEがLXCコンテナにも対応している理由

 では、なぜProxmox VEは仮想マシンだけではなく、LXCコンテナも使えるのでしょうか。

 仮想マシンは、ハードウェアの動作をエミュレートすることで、LinuxだけではなくWindowsなどさまざまなOSを独立して動かすことができます。一方で、起動中の仮想マシンのメモリ使用状況を見ても分かる通り、アイドル状態でも数GBのメモリを占有します。

前回作成したRocky Linuxだと2GB近くメモリを使用している 前回作成したRocky Linuxだと2GB近くメモリを使用している

 これはカーネルの動作に必要なメモリがそれぞれの仮想マシンでどうしても消費されてしまうことが原因です。

 LXCコンテナの場合はホストOS、つまりProxmox VEのカーネルを共有しながら、プロセスなどはユーザー名前空間で隔離して動作するため、カーネル部分のオーバーヘッドが必要ありません。

 つまり、仮想ハードウェアごと分ける必要はなく、アプリケーションコンテナと同様にプロセスの名前空間として隔離するだけで十分なら、LXCコンテナで仮想環境を構築することでメモリ使用量を節約できます。

コンテナテンプレートの入手

 仮想マシンを作成する際はOSのインストールを実施するため、インストールメディアのISOファイルを使用しました。Proxmox VEでコンテナを作成する場合はOSの基本的なファイルがアーカイブされたコンテナテンプレートを使います。

 まずはコンテナテンプレートを入手しましょう。

 Proxmox VE管理画面の左のメニューからストレージ(デフォルトだと「local」)を選択し、右側に表示されたメニューから「CTテンプレート」を選択します。次に、上に表示されている「テンプレート」ボタンを選択します。

テンプレート画面 テンプレート画面

 ダウンロード可能なコンテナテンプレートの一覧が表示されるので、今回はRocky Linuxのコンテナテンプレートである「rockylinux_10-default」をダウンロードします。

 該当の項目を選択し、右下の「ダウンロード」ボタンを選択します。

テンプレート一覧画面 テンプレート一覧画面

 コンテナテンプレートのダウンロードが始まり、画面上に「TASK OK」と出力されたらダウンロード完了です。右上の×印を選択してダイアログを閉じます。

テンプレートダウンロード画面 テンプレートダウンロード画面

 最初の画面に戻ると、ダウンロードしたRocky Linuxのコンテナテンプレートが表示されていることが分かります。

テンプレート画面 テンプレート画面

コンテナの作成

 コンテナテンプレートをダウンロードしたので、早速コンテナを作成してみましょう。Proxmox VE管理画面の右上に表示されている、「CTを作成」という青いボタンを選択します。

 仮想マシンを作成するときと同様に、作成するコンテナ名や構成などを設定する画面が表示されます。以下の内容を入力します。

  • 「全般」タブ
    1. 「ホスト名」に「rocky-container」と入力
    2. 「パスワード」と「パスワードの確認」に、作成するコンテナのrootに設定するパスワードを入力
  • 「テンプレート」タブ
    1. 先ほどダウンロードしたRocky Linuxのコンテナテンプレートを選択
  • 「ネットワーク」タブ
    1. 必要に応じてIPv4やIPv6の静的アドレスを設定するか「DHCP」を選択

 設定を進めていくと確認画面が表示されるので、内容に問題がなければ「完了」ボタンを選択します。

コンテナ作成の確認画面 コンテナ作成の確認画面

 すると、コンテナテンプレートのダウンロード時と同じような画面が表示されます。画面上に「TASK OK」と出力されたらコンテナの作成が完了です。右上の×印を選択してダイアログを閉じます。

コンテナ作成画面 コンテナ作成画面

 管理画面に戻り、右上の「開始」ボタンを選択します。これでコンテナが起動しますが、すぐに起動が完了します。右上の「コンソール」ボタンを選択してコンソール画面を表示して、ログインします。

コンテナへのログイン コンテナへのログイン

 仮想マシンと同様の操作でログインできることが分かるかと思います。しかし、画面上のメモリ使用状況を見ると、仮想マシンの場合と比べて大幅に少ないメモリ使用量で仮想環境が起動しています。

コンテナのメモリ使用状況 コンテナのメモリ使用状況

 このように、LXCコンテナは仮想マシンと比べて操作性があまり変わりませんが、軽量に動作します。

LXCコンテナの中でアプリケーションコンテナを動かす

 さて、LXCコンテナは軽量で動作することが分かりました。では、アプリケーションコンテナを動かす場合はどうすれば良いでしょうか。Proxmox VE自体でアプリケーションコンテナを動かすことは可能ですが、現時点ではテクノロジープレビューの位置付けです。

 では、アプリケーションコンテナは仮想マシン上で動かすしかないかというと、そうではありません。LXCコンテナの上でアプリケーションコンテナを動かすことができます。

 LXCコンテナの中でアプリケーションコンテナを動かすには、LXCコンテナを作成するときの「全般」タブで表示されていた「ネスト」という項目を有効にする必要があります。デフォルト(既定)で有効ですので、もし無効にしてしまった場合は一度コンテナをシャットダウンして、左のメニューの「オプション」を選択後、「機能」を選択して「編集」ボタンを選択し、「ネスト」のチェックボックスを有効にしてください。

 それでは、先ほど作成したRocky LinuxのLXCコンテナを使って、アプリケーションコンテナを動かしてみましょう。ここから先はコンソール画面上での操作になりますので、前述の通りコンテナにログインしてから操作してください。

 今回はコンテナランタイムとしてPodmanを使います。次のコマンドを実行してPodmanをインストールしてください。

dnf -y install podman

 次に、試しに動かすアプリケーションコンテナとして、ブラウザを使って簡単に動作確認ができるNginxを実行しようと思います。以下のコマンドを実行してNginxコンテナを起動してみましょう。

podman run -p 80:80 docker.io/library/nginx

 Nginxコンテナが起動できたら、ブラウザでRocky LinuxコンテナのIPアドレスに対してアクセスしてみましょう。「Welcome to nginx!」というメッセージが表示されていれば、正常に起動できています。

まとめ

 今回は、Proxmox VEの強みであるLXCコンテナの作成と、その上でアプリケーションコンテナを起動する方法を紹介しました。

 OSとして完全に独立して動かす必要がある場合は仮想マシン、Proxmox VEのカーネルを共有してもいいのであれば軽量に動かすことができるLXCコンテナというように、用途や要件に応じて使い分けるとリソースを最大限効率的に使用できるでしょう。特に、アプリケーションコンテナを動かす用途なら仮想マシンである必要はなく、LXCコンテナの上で動かすといいでしょう。

筆者紹介

鎌田啓佑

サイオステクノロジー所属。OSS よろず相談室でサポート対応をしているテクニカルサポートエンジニア。Ansibleに出会ってから自動化に取りつかれ、自身の業務やプライベートであらゆるものの自動化に取り組む。プライベートではJavaでちょっとしたツールの開発を趣味にしている。

サイオス OSS よろず相談室

サイオステクノロジーエンジニアブログ

サイオステクノロジーエンジニア YouTube チャンネル


Copyright © ITmedia, Inc. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

その「AIコーディング」は本当に必要か?
Microsoft & Windows最前線2026
4AI by @IT - AIを作り、動かし、守り、生かす
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。