お金をかけずにサーバーの勉強をしよう

PROXMOX環境構築 4

2024年4月18日

メニューへ戻る

PROXMOXで LXCコンテナを立ち上げます。

PROXMOX環境構築 1」と「PROXMOX環境構築 2」で PROXMOXのインストールをし、
PROXMOX環境構築 3」で Windows Server 2022の仮想OSを立ち上げました。

ところで PROXMOXってどう読むのかな?と思って、YouTubeで英語動画を観てみましたら、

(早口)プラァッックスマァッックス

って大仰に言ってましたね。
アイツ等何考えてんのかよく分かりません。

まぁ日本ではプロックスモックスで良いでしょう。(調べた意味なし)


ここでは PROXMOXの仮想マシン機能(KVM)と並ぶ、コンテナ(LXC)の機能を使ってみます。

コンテナってことで、当初は Dockerのコンテナを動かすんだろうって思っていたんですが、LXCの事を調べてみるとちょっと違うんですね。

勝手な分類ではこんなイメージになりました。

Dockerアプリケーションコンテナ
1つのアプリ(プログラム)を動かすための環境を分離する。
LXCシステムコンテナ
Linux OSの環境を分離する。
仮想マシンハードウェアエミュレーター
物理ハードウェアを分離する。

Dockerを扱ったことはあるんですが、LXCのシステムコンテナってのは初めてです。

1つの Linux OSの中でカーネルだけ共有して、あたかも Linux OSがいくつもあるように見せられる。
だけどシステムリソースは共有していて無駄がない。
その代わりリソースの取り合いは起こる。

こんなところでしょうか。

Dockerのコンテナでも Ubuntu Linuxのコンテナイメージがありますけど、かなりアレと近いんではないかと思います。

Dockerコンテナはスタート時に実行できるプログラムが 1個だけで systemdが介在しないとかありましたけど、システムコンテナでは systemdが使えますよ。


早速やってみます。
PROXMOXにログインして下さい。

コンテナを作る前に、テンプレートと呼ばれる Linux OSの種とでも言いましょうか、Dockerで言うところのコンテナイメージのようなのをダウンロードしておかないといけません。

左にあるツリーで [proxmox] - [local (proxmox)] と選ぶと右にリストが出ますので [CTテンプレート] を選びます。
更に右に出てくるテンプレートを押します。
テンプレートダウンロード 1

多分これは PROXMOXのリポジトリにあるテンプレートの一覧ですね。
他からも足せるようです。
今回は [ubuntu-23.10-standard] を入れてみることにしました。
その行を選んでダウンロードを押します。
テンプレートダウンロード 2

ダウンロードが終わったら×で閉じます。
テンプレートダウンロード 3


コンテナを作成します。

ダッシュボード右上のCTを作成を押します。
テンプレートダウンロード 4

[全般]タブ

ノードこのコンテナを実行するPROXMOXサーバーです。
リソースプール分かりやすくまとめておくためのグループです。
ここでは作成できず、事前に作っておかなくてはなりません。
CT ID仮想マシン・コンテナを一意に識別するための番号です。
自動で割り振られましたので、そのままにしました。
ホスト名コンテナに持たせるホスト名です。
パスワード
パスワードの確認
コンテナの [root]ユーザーのパスワードです。
非特権コンテナこのコンテナにホストOSの動作に影響するようなシステムコールを許すかどうかのチェックです。
チェックは変更できませんでした。
ネストどういう意味なのか分かりませんでした。
チェックは変更できませんでした。
SSH公開鍵このコンテナの [root]ユーザーに登録する公開鍵です。

次へを押します。
テンプレートダウンロード 5

[テンプレート]タブ
[テンプレート:] のプルダウンを押すと、先程ダウンロードしたテンプレートが一覧されますので [ubuntu-23.10-standard] を選択します。
次へを押します。
テンプレートダウンロード 6

[ディスク]タブ
[ストレージ:] は [local-lvm] しかないので、これを選択しています。
[ディスクサイズ (GiB):] は 8GBでは小さいですが、テストなのでこのまま。
他も変えずに次へを押します。
テンプレートダウンロード 7

[CPU]タブ
とりあえず CPUは 1個にしました。得に意味はありません。
次へを押します。
テンプレートダウンロード 8

[メモリ]タブ
実メモリ 512MBにスワップメモリ 512MBでは少ないですが、テストなのでこのまま。
次へを押します。
テンプレートダウンロード 9

[ネットワーク]タブ
LXCのコンテナは仮想マシンみたいに個々にネットワークインターフェイスを持ってる感じになるんですね。
仮想マシンの時と同様に家庭内LANでの固定IPを設定しました。
[IPv4/CIDR:] は後ろにサブネットマスクの [/24] を付けていることに注意して下さい。
次へを押します。
テンプレートダウンロード 10

[DNS]タブ
仮想マシンの時と同様に家庭内LANの DNSサーバーの IPを設定しました。
次へを押します。
テンプレートダウンロード 11

[確認]タブ
完了を押すとコンテナ作成が開始されます。
テンプレートダウンロード 12

完了したら、×で閉じます。
テンプレートダウンロード 13

コンテナができました。
テンプレートダウンロード 14

開始を押して、コンテナを起動します。
2秒くらいで起動したようです。
コンテナ 1

[コンソール]を選んで、ユーザーは [root]、パスワードはさっき設定したものでログインできます。
Ubuntuだけど [root]ユーザーでログインさせちゃうんだ…って思いました。
コンテナ 2

Ubuntu 23.10のテンプレートに GUIは入ってなさげですね。
コンテナだからそれで良いのでしょう。
使い方としては Ubuntu Serverに近いです。

この後 apt upgrade をしてみて、インターネットに繋がることも確認できました。

sshdはデフォで立ち上がっていて、一般ユーザーを作成の後、他のマシンから sshでログインもできました。

仮想マシンで Ubuntu Serverをインストールしたのと大差ない感じです。

PROXMOXでの LXCコンテナ作成はこれにて完了です。
えらく簡単でした。


===== 終わる前に =====
PROXMOXのアップデート用に登録されているリポジトリなんですが、デフォルトだとお金を払っている人だけが使える Enterpriseリポジトリも登録されていますので、これは外しておきましょう。

[データセンター] - [proxmox] - [アップデート] - [リポジトリ] と選択します。
リポジトリ登録変更 1
右ペインに登録されているリポジトリのリストが出ますが、下の 2つが除外対象の Enterpriseリポジトリです。

対象行をクリックしてDisableを押します。
リポジトリ登録変更 2

無効になるとこの部分が [-] になります。
リポジトリ登録変更 3

どうせだからアップデートします。

[データセンター] - [proxmox] - [アップデート] を選択し、再表示を押します。
リポジトリ登録変更 4

Debianのリポジトリからアップデート対象のパッケージのリストを取ってきて更新してくれてるのでしょう。
[Task OK] と出ましたら、[×]で消します。
リポジトリ登録変更 5

[アップグレード]プルダウンリストから(私は) [xterm.js] を選択します。
リポジトリ登録変更 6

ターミナル風の画面が開いて、中で apt upgradeコマンドを実行してるんでしょうね、途中でアップグレードして良いか聞いてきましたので [Y] を入力しました。
これはアップデートが終わった所の画面です。
[exit] で抜けましょう。
リポジトリ登録変更 7

このあと一応 PROXMOXの再起動をした方が良いのでしょうね、多分。

ちょっとドキドキしながら再起動しましたが、問題なく立ち上がりました。


==========
ホストOSである PROXMOXとは分離された Linux OS環境をコンテナという形で作ったわけですが、作成に至るまでの時間がすごく短かったのが印象的でした。

仮想マシンに比べて何か足りないものはあるかも知れませんが、Ubuntu Serverの環境を作るなら仮想マシンでなくとも LXCコンテナで良いんじゃないかと思います。

仮想マシン・システムコンテナ・アプリケーションコンテナの 3種を 1つのプラットフォーム上で使い分けられるのが PROXMOXの利点です。

まだ日本では余り知られてないのかも知れませんけど、ESXiが有償ソフトになってしまった今、お金を出さないのにHA構成やクラスタ構成もできるとなると利用者が徐々に増えてくるのではないかと思います。

様々なサーバーミドルウェアの検証や設計のお勉強には、コイツをミニPCにインストールしてやると捗るんじゃないでしょうか。


これなんてメモリが 64GBも載ってますから、3台(PROXMOXのクラスタは 3台から)買ったらさぞ検証が捗ることでしょう。

書いてる自分が欲しくなってきたぞ。