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

Linuxシステムコンテナ(LXD) 1

2025年3月31日

メニューへ戻る

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

Web UI側のドキュメントには、「sudo snap set lxd ui.enable=true」を実行するよう書いてあるのですが、これはデフォルトで enable になっていますので、ここの手順では以下をやることにしました。
[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では自己署名のサーバー証明書が使われているので、最初はこういった注意が出ますが強行します。
詳細へ進む…を押します。
LXD WEB-UI 1

危険性を承知の上で使用を押します。
LXD WEB-UI 2

どうやらログインはアカウント/パスワードではなく、個人用の証明書を使って行われるようです。
Create a new certificateを押します。
LXD WEB-UI 3

次のページが証明書関連の手順を示しています。
これに沿って進めていきます。
Generateを押します。
LXD WEB-UI 4

この証明書にパスワードを設定します。
2箇所に同じものを入れ、Generate certificateを押します。
LXD WEB-UI 5

[2.Trust] のところにDownload crtが現れるので押します。
LXD WEB-UI 6
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を押します。
LXD WEB-UI 7
Firefoxで [lxd-ui-ubuntuserver2404-1.pfx]ファイルがダウンロードされてきました。

Firefoxのアドレス枠に [about:preferences#privacy]と入れますと、Firefoxのメニューで [設定] - [プライバシーとセキュリティ] を選んだ際の画面が開きます。
下の方にスクロールしていき、[セキュリティ] - [証明書] の段落にある
証明書を表示を押します。
LXD WEB-UI 8

[あなたの証明書]タブを選択し、インポートを押します。
LXD WEB-UI 9

ファイラーが開きますので、上でダウンロードした
[lxd-ui-ubuntuserver2404-1.pfx]ファイルを選択します。

証明書を作る時に設定したパスワードを入れてログインを押します。
LXD WEB-UI 10

登録され、表示されました
OKを押します。
LXD WEB-UI 11

手順では「WEBブラウザのリロードをしろ」とありましたので、Firefoxを立ち上げ、改めて [https://UbuntuServer2404-1:8443] にアクセスしました。

「個人証明書を使うぞ〜」ってダイアログが出ました。
OKを押します。
LXD WEB-UI 12

こんな画面になりました。
LXD WEB-UI 13

手順によると次は「LXDをエンジョイしなさい」だそうです。


ちょっと長くなってしまいましたので、Linuxシステムコンテナの作成は次回に回します。

Linuxシステムコンテナ(LXD) 2」に続きます。