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テンプレート] を選びます。
更に右に出てくるテンプレートを押します。
多分これは PROXMOXのリポジトリにあるテンプレートの一覧ですね。
他からも足せるようです。
今回は [ubuntu-23.10-standard] を入れてみることにしました。
その行を選んでダウンロードを押します。
ダウンロードが終わったら×で閉じます。
コンテナを作成します。
ダッシュボード右上のCTを作成を押します。
●[全般]タブ
ノード | このコンテナを実行するPROXMOXサーバーです。 |
リソースプール | 分かりやすくまとめておくためのグループです。 ここでは作成できず、事前に作っておかなくてはなりません。 |
CT ID | 仮想マシン・コンテナを一意に識別するための番号です。 自動で割り振られましたので、そのままにしました。 |
ホスト名 | コンテナに持たせるホスト名です。 |
パスワード パスワードの確認 | コンテナの [root]ユーザーのパスワードです。 |
非特権コンテナ | このコンテナにホストOSの動作に影響するようなシステムコールを許すかどうかのチェックです。 チェックは変更できませんでした。 |
ネスト | どういう意味なのか分かりませんでした。 チェックは変更できませんでした。 |
SSH公開鍵 | このコンテナの [root]ユーザーに登録する公開鍵です。 |
次へを押します。
●[テンプレート]タブ
[テンプレート:] のプルダウンを押すと、先程ダウンロードしたテンプレートが一覧されますので [ubuntu-23.10-standard] を選択します。
次へを押します。
●[ディスク]タブ
[ストレージ:] は [local-lvm] しかないので、これを選択しています。
[ディスクサイズ (GiB):] は 8GBでは小さいですが、テストなのでこのまま。
他も変えずに次へを押します。
●[CPU]タブ
とりあえず CPUは 1個にしました。得に意味はありません。
次へを押します。
●[メモリ]タブ
実メモリ 512MBにスワップメモリ 512MBでは少ないですが、テストなのでこのまま。
次へを押します。
●[ネットワーク]タブ
LXCのコンテナは仮想マシンみたいに個々にネットワークインターフェイスを持ってる感じになるんですね。
仮想マシンの時と同様に家庭内LANでの固定IPを設定しました。
[IPv4/CIDR:] は後ろにサブネットマスクの [/24] を付けていることに注意して下さい。
次へを押します。
●[DNS]タブ
仮想マシンの時と同様に家庭内LANの DNSサーバーの IPを設定しました。
次へを押します。
●[確認]タブ
完了を押すとコンテナ作成が開始されます。
完了したら、×で閉じます。
コンテナができました。
開始を押して、コンテナを起動します。
2秒くらいで起動したようです。
[コンソール]を選んで、ユーザーは [root]、パスワードはさっき設定したものでログインできます。
Ubuntuだけど [root]ユーザーでログインさせちゃうんだ…って思いました。
Ubuntu 23.10のテンプレートに GUIは入ってなさげですね。
コンテナだからそれで良いのでしょう。
使い方としては Ubuntu Serverに近いです。
この後 apt upgrade をしてみて、インターネットに繋がることも確認できました。
sshdはデフォで立ち上がっていて、一般ユーザーを作成の後、他のマシンから sshでログインもできました。
仮想マシンで Ubuntu Serverをインストールしたのと大差ない感じです。
PROXMOXでの LXCコンテナ作成はこれにて完了です。
えらく簡単でした。
===== 終わる前に =====
PROXMOXのアップデート用に登録されているリポジトリなんですが、デフォルトだとお金を払っている人だけが使える Enterpriseリポジトリも登録されていますので、これは外しておきましょう。
[データセンター] - [proxmox] - [アップデート] - [リポジトリ] と選択します。
右ペインに登録されているリポジトリのリストが出ますが、下の 2つが除外対象の Enterpriseリポジトリです。
対象行をクリックしてDisableを押します。
無効になるとこの部分が [-] になります。
どうせだからアップデートします。
[データセンター] - [proxmox] - [アップデート] を選択し、再表示を押します。
Debianのリポジトリからアップデート対象のパッケージのリストを取ってきて更新してくれてるのでしょう。
[Task OK] と出ましたら、[×]で消します。
[アップグレード]プルダウンリストから(私は) [xterm.js] を選択します。
ターミナル風の画面が開いて、中で apt upgradeコマンドを実行してるんでしょうね、途中でアップグレードして良いか聞いてきましたので [Y] を入力しました。
これはアップデートが終わった所の画面です。
[exit] で抜けましょう。
このあと一応 PROXMOXの再起動をした方が良いのでしょうね、多分。
ちょっとドキドキしながら再起動しましたが、問題なく立ち上がりました。
==========
ホストOSである PROXMOXとは分離された Linux OS環境をコンテナという形で作ったわけですが、作成に至るまでの時間がすごく短かったのが印象的でした。
仮想マシンに比べて何か足りないものはあるかも知れませんが、Ubuntu Serverの環境を作るなら仮想マシンでなくとも LXCコンテナで良いんじゃないかと思います。
仮想マシン・システムコンテナ・アプリケーションコンテナの 3種を 1つのプラットフォーム上で使い分けられるのが PROXMOXの利点です。
まだ日本では余り知られてないのかも知れませんけど、ESXiが有償ソフトになってしまった今、お金を出さないのにHA構成やクラスタ構成もできるとなると利用者が徐々に増えてくるのではないかと思います。
様々なサーバーミドルウェアの検証や設計のお勉強には、コイツをミニPCにインストールしてやると捗るんじゃないでしょうか。
これなんてメモリが 64GBも載ってますから、3台(PROXMOXのクラスタは 3台から)買ったらさぞ検証が捗ることでしょう。
書いてる自分が欲しくなってきたぞ。