Linuxシステムコンテナで、仮想マシンでもアプリケーションコンテナでもない Linux仮想環境を作ります。
「PROXMOX環境構築 1」からのシリーズで、Linuxのシステムコンテナを初めて使ってみて、「あれ? Linuxの仮想OS環境が必要なら、別ソフト入れなくてもこれでイイんじゃね?」と思ったのが発端で、LXDというものを直接使ってみようと思い立ちました。
これまで VMware Workstation Proというソフトを使って仮想マシンを作ってきていて、LXDをイジったことがなかったので良い機会と思いました。
ここでは Ubuntu Server 24.04を使って LXDで Linuxシステムコンテナってものを作っていきますが、LXDを取り巻く環境に関して 2023年内に大きな動きがあったようですので、それを少しおさらいします。
これを調べていくと「LXC」と「LXD」という似たような単語が出てきます。
LXCはこちらのプロジェクトで開発されているツールの 1つです。
Container and virtualization tools
LXDも元々上記プロジェクトの 1つで、Ubuntuを開発している Canonicalがスポンサーしていたようですが、2023年7月4日にこのようなアナウンスがありました。
LXD は Canonical の傘下に入りました
「残念」と書いてある所から、内部でアレコレとあったんだと想像できます。
そして 2023年8月4日にこちらのものが上記のプロジェクトに加わっています。
LXDは元々 LXCのツールの 1つだったようですが、2023年7月4日にこのようなアナウンスがありました。
Incus の紹介
すぐにフォークしたツールを立ち上げる所からしても、やはり何かあったんだろうと。
総じて見ると、Canonicalが上記プロジェクトから LXDを引き揚げて自社開発物とし、上記プロジェクトでは代わりに LXDからフォークした Incusを別途開発し始めた、ということなんだろうと思います。
過去に MySQLから袂を分かった MariaDBの事を思い出します。
経緯はどうあれ次に考えるべきなのは、LXDと Incusのシェアがどうなっていくかです。
LXDを Canonicalが引き揚げたということは、Ubuntuでは LXDが主流となり、他の Linux OSでは Incusが主流となるのかも知れません。
似たような技術はいずれ 1本に収斂していくので、どちらかが生き残るはずです。
Ubuntuは Linux OSのディストリビューションとしては大きな柱ですから、仮に LXDが Ubuntu以外の Linux OSでは上手く動かず LXDが孤立することになっても LXDは即死亡ということにはならないと思います。
上記の喧嘩別れから 1年9ヶ月経ちましたが特に動きがないようです。
こちらが Canonicalの Ubuntuのサイトの LXDの文書です。
LXD
『Software Design』誌でお馴染みの技術評論社さんのブログを大いに参考にさせていただいております。
第769回 Canonicalが開発する LXDの公式 Web UIである LXD-UIを試してみる
第796回 LXDとIncus、今後どちらをUbuntuユーザーは使うべきか?
1.インストール
以下のチュートリアルに沿って進めます。
Install and initialize LXD
snapのアップデートは勝手にされていますのでこれは割愛。
パッケージインストールの前にリリースされているバージョンを確認します。
(2025年3月31日時点です。)
subro@UbuntuServer2404-1:~$ snap info lxd
〜〜〜 省略 〜〜〜
channels:
5.21/stable: 5.21.3-75def3c 2025-02-20 (32455) 118MB -
5.21/candidate: 5.21.3-5ec852c 2025-03-29 (33097) 118MB -
5.21/beta: ↑
5.21/edge: git-fcb8c65 2025-03-25 (33026) 119MB -
latest/stable: 6.3-95a2761 2025-03-26 (33015) 116MB -
latest/candidate: 6.3-f22a395 2025-03-28 (33085) 116MB -
latest/beta: ↑
latest/edge: git-a25c78d 2025-03-28 (33090) 116MB -
6/stable: 6.3-95a2761 2025-03-25 (33015) 116MB -
6/candidate: 6.3-f22a395 2025-03-28 (33085) 116MB -
6/beta: ↑
6/edge: git-a25c78d 2025-03-28 (33090) 116MB -
5.0/stable: 5.0.4-497fe1e 2024-11-26 (31333) 93MB -
5.0/candidate: 5.0.4-a8cab8f 2025-01-20 (32094) 95MB -
5.0/beta: ↑
5.0/edge: git-c71152a 2025-03-24 (32953) 119MB -
4.0/stable: 4.0.10-d342340 2025-03-12 (32662) 96MB -
4.0/candidate: 4.0.10-d342340 2025-03-03 (32662) 96MB -
4.0/beta: ↑
4.0/edge: git-f317d85 2025-03-18 (32906) 96MB -
3.0/stable: 3.0.4 2019-10-10 (11348) 55MB -
3.0/candidate: 3.0.4 2019-10-10 (11348) 55MB -
3.0/beta: ↑
3.0/edge: git-81b81b9 2019-10-10 (11362) 55MB -
installed: 5.21.3-75def3c (32455) 118MB -
ピンクの行を見て下さい。
普通にインストールすると 5.21.3 がインストールされますが、[latest/stable] は 6.3 になっています。。
snapコマンドでオプションを付けないでパッケージをインストールすると [latest/stable] のものがインストールされるとドキュメントにも書いてあるんですが、実際はそうなりませんでした。
チュートリアルでは snapの lxdパッケージインストールのコマンドに
「--channel=<channel>」というコマンドオプションを付けていますし、正しいか不明ながらもこのコマンドオプションを付けてパッケージをインストールしてみます。
subro@UbuntuServer2404-1:~$ sudo snap install lxd --channel=latest/stable
lxd 6.3-95a2761 from Canonical✓ installed
インストールできました。
2.LXD web UIを有効にする
LXDで Linuxシステムコンテナを綺麗な画面から作れる LXD web UIという機能を使うにあたって、lxdデーモンに外部からの API制御を許可する作業が必要のようです。
次の文書の箇所です。
Configure server options
[8443/tcp] もデフォルトなんだと思いますが、この番号を変更することもできそうですので。
なおこの時点ではまだ LXDのデーモンが立ち上がっておりませんでしたので、ここらで lxcコマンドで何かしら実行してやらないと Web UIにアクセスできないんだと思います。
以下のコマンドを実行しました。
subro@UbuntuServer2404-1:~$ sudo lxc config set core.https_address :8443
If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:24.04
Or for a virtual machine: lxc launch ubuntu:24.04 --vm
Web UIのアクセスポートを指定しているんでしょうね。
これで OKそう。
この作業を通して LXDのデーモン立ち上がりましたし、OS起動時に自動起動するようにもなりました。
systemdが認識しているのは [snap.lxd.daemon]サービスで、[snap.lxd.daemon.unix.socket]から起動される構成になっているようです。
(上で lxcコマンドを実行していますからそれが契機になってるのではないかと)
3.LXD web UIにアクセス
ドキュメントはこちら。
How to access the LXD web UI
これによると [8443/tcp(HTTPS)]で待ち受けているようですので、WEBブラウザでアクセスします。
私の環境では [https://UbuntuServer2404-1:8443] になります。
(HTTPSでアクセスしないといけません。)
私は Firefoxを愛用していまして、Web UIでは自己署名のサーバー証明書が使われているので、最初はこういった注意が出ますが強行します。
詳細へ進む…を押します。
危険性を承知の上で使用を押します。
どうやらログインはアカウント/パスワードではなく、個人用の証明書を使って行われるようです。
Create a new certificateを押します。
次のページが証明書関連の手順を示しています。
これに沿って進めていきます。
Generateを押します。
この証明書にパスワードを設定します。
2箇所に同じものを入れ、Generate certificateを押します。
[2.Trust] のところにDownload crtが現れるので押します。
Firefoxで [lxd-ui-ubuntuserver2404-1.crt]ファイルがダウンロードされてきました。
私はクライアントとして使っている Lubuntu 24.04の Firefoxでダウンロードしてしまいましたので、[lxd-ui-ubuntuserver2404-1.crt]ファイルを scpコマンドで Ubuntu Serverの [/home/subro]ディレクトリに持っていってから、以下のコマンドを実行しました。
subro@UbuntuServer2404-1:~$ lxc config trust add ./lxd-ui-ubuntuserver2404-1.crt
何も出ませんでしたが、上手くいっています。
次はクライアント(Lubuntu 24.04)の Firefoxに個人用の証明書を登録をします。
[3.Import] では、私は Firefoxですので [Firefox]タブを選択し、Download pfxを押します。
Firefoxで [lxd-ui-ubuntuserver2404-1.pfx]ファイルがダウンロードされてきました。
Firefoxのアドレス枠に [about:preferences#privacy]と入れますと、Firefoxのメニューで [設定] - [プライバシーとセキュリティ] を選んだ際の画面が開きます。
下の方にスクロールしていき、[セキュリティ] - [証明書] の段落にある
証明書を表示を押します。
[あなたの証明書]タブを選択し、インポートを押します。
ファイラーが開きますので、上でダウンロードした
[lxd-ui-ubuntuserver2404-1.pfx]ファイルを選択します。
証明書を作る時に設定したパスワードを入れてログインを押します。
登録され、表示されました
OKを押します。
手順では「WEBブラウザのリロードをしろ」とありましたので、Firefoxを立ち上げ、改めて [https://UbuntuServer2404-1:8443] にアクセスしました。
「個人証明書を使うぞ〜」ってダイアログが出ました。
OKを押します。
こんな画面になりました。
手順によると次は「LXDをエンジョイしなさい」だそうです。
ちょっと長くなってしまいましたので、Linuxシステムコンテナの作成は次回に回します。
「Linuxシステムコンテナ(LXD) 2」に続きます。